次のコードを作成して実行しようとしました。
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
オブジェクトが異なっていても同じです。私たちが観察したのは、2番目のオブジェクト(つまり「a」)が最初のオブジェクト(つまり「e」)の値を置き換えているということです。出力は次のようになります
42
90
90
しかし、必要な出力は
42
90
42
なぜそれが起こっているのか誰かが提案できますか?オブジェクトIDが異なるため、オブジェクトは置き換えられません。オブジェクトの値のみが置き換えられます。