嗨,我想执行以下操作。我只是想重载[]方法来访问实例变量......我知道,它根本没有什么意义,但我想这样做是因为一些奇怪的原因:P在Ruby中使用重载括号[]的访问变量
它会是这样的......
class Wata
attr_accessor :nombre, :edad
def initialize(n,e)
@nombre = n
@edad = e
end
def [](iv)
self.iv
end
end
juan = Wata.new('juan',123)
puts juan['nombre']
但是,这会引发以下错误:
overload.rb:11:`[]':未定义的方法 '四' 的#(NoMethodError)
我该怎么做?
编辑
我也发现了此解决方案:
def [](iv)
eval("self."+iv)
end
优秀查克!我不知道发送变量的任何内容... 它也适用于instance_variable_get 谢谢.. – flyer88 2009-12-14 20:29:38
只发送方法的工作,attr_accessor为您添加setter和getter方法,所以发送基本上是调用getter。 – khelll 2009-12-14 20:35:42