如果我有一個類: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'塊的優先級較低,然後是'{..}'塊有關。 –