мы сделали следующий код и попытались его запустить.бесплатная программа интерфейса в Ruby
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
такой же, даже если объекты различны. мы заметили, что второй объект i.e 'a' заменяет значение первого объекта, т.е. e. выход выходит быть
42
90
90
но на выходе требуется
42
90
42
кто может предложить, почему это происходит? он не заменяет объект, так как идентификатор объекта различен ... только значения объектов заменяются.
Кроме того, если вы используете accesors для количества и имя экземпляра переменных, вы можете просто определить 'attr_accessor: quantity' и' attr_reader: name' и опускаем методы вообще. – Chubas
Истинный, отредактированный, чтобы отразить это. – 2010-05-28 05:53:54
oh..thank вас так много .. мы этого не заметили .. это просто, что мы только что начали с ruby. – intern