学術的な理由から、Ruby クラスのインスタンスをハッシュのように動作させたいと考えています。
目標
- MyClass インスタンスをハッシュで初期化 # 成功
- ハッシュのように、myClass のインスタンスから値を要求します # 成功
- 次に、プロパティをハッシュとして設定します # 失敗
いくつかの議論が存在しますが、私はそこにあるもの ( 1、2 )を試しましたが、成功しませんでした。私が間違っていることを教えてください。ありがとう!
class MyClass
attr_accessor :my_hash
def initialize(hash={})
@my_hash = hash
end
def [](key)
my_hash[key]
end
def set_prop(key, value)
myhash[key] = value
end
end
test = myClass.new({:a => 3}) #=> #<MyClass:0x007f96ca943898 @my_hash={:a=>3}>
test[:a] #=> 3
test[:b] = 4 #=> NameError: undefined local variable or method `myhash' for #<MyClass:0x007f96ca9d0ef0 @my_hash={:a=>3}>