出于学术原因,我想让 Ruby 类的实例像哈希一样。
目标
- 用哈希初始化 MyClass 实例 # 成功
- 从 myClass 的实例请求值,如哈希 # 成功
- 然后将属性设置为哈希 #fail
尽管存在一些讨论,但我尝试了那里的内容(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}>