如果我有一个类:instance_eval的不DO /结束块工作,只能用{} -blocks
class KlassWithSecret
def initialize
@secret = 99
end
end
并运行:
puts KlassWithSecret.new.instance_eval { @secret }
它打印99,但是如果我跑:
puts KlassWithSecret.new.instance_eval do
@secret
end
它返回一个错误:`instance_eval': wrong number of arguments (0 for 1..3) (ArgumentError)
为什么我不能用instance_eval
来使用do/end块?
P.S.我正在使用Ruby 2.1.0。
这里工作(红宝石2.0.0)你使用的是什么红宝石版本? – levinalex
适合我(2.1.0)。你确定你粘贴的代码导致错误? –
无法在1.9.3中重现。如果你有一些较老的/不同的Ruby实现,它可能与'do..end'块的优先级较低,然后是'{..}'块有关。 –