出于学术原因,我想让Ruby类的实例像哈希一样.
GOALS
虽然一些讨论存在的,我想外面的东西(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}>
Run Code Online (Sandbox Code Playgroud)
你声明了set_prop,但你[]=在测试中使用.你的意思是这个吗?
class MyClass
attr_accessor :my_hash
def initialize(hash={})
@my_hash = hash
end
def [](key)
my_hash[key]
end
def []=(key, value)
my_hash[key] = value
end
end
test = MyClass.new({:a => 3}) # success
test[:a] # success
test[:b] = 4 # success
test.my_hash # => {:a=>3, :b=>4}
Run Code Online (Sandbox Code Playgroud)