【发布时间】:2014-01-29 08:10:30
【问题描述】:
如果我有课:
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 块?
附:我正在使用 Ruby 2.1.0。
【问题讨论】:
-
在这里工作(ruby 2.0.0)您使用的是哪个 ruby 版本?
-
为我工作 (2.1.0)。您确定您粘贴的代码会导致错误吗?
-
无法在 1.9.3 中重现。如果您有一些较旧/不同的 Ruby 实现,则可能与
do..end块的优先级低于{..}块有关。 -
对不起伙计们,我本来打算和
puts一起使用,我的错。编辑了问题。
标签: ruby instance-eval