мы сделали следующий код и пытаемся его запустить.
class Numeric
def gram
self
end
alias_method :grams, :gram
def of(name)
ingredient = Ingredient.new(name)
ingredient.quantity=self
return ingredient
end
end
class Ingredient
def initialize(n)
@@name= n
end
def quantity=(o)
@@quantity = o
return @@quantity
end
def name
return @@name
end
def quantity
return @@quantity
end
end
e= 42.grams.of("Test")
a= Ingredient.new("Testjio")
puts e.quantity
a.quantity=90
puts a.quantity
puts e.quantity
проблема, с которой мы сталкиваемся, заключается в том, что результат
puts a.quantity
puts e.quantity
одинаково, даже если объекты разные. мы наблюдали, что второй объект, то есть «а», заменяет значение первого объекта, то есть «е». выход будет
42
90
90
, но требуется вывод
42
90
42
Кто-нибудь может подсказать, почему это происходит? он не заменяет объект, так как идентификаторы объекта отличаются ... только значения объектов заменяются.