2
class Setter
attr_accessor :foo
def initialize
@foo = "It aint easy being cheesy!"
end
def set
self.instance_eval { yield if block_given? }
end
end
options = Setter.new
# Works
options.instance_eval do
p foo
end
# Fails
options.set do
p foo
end
爲什麼'set'方法失敗?Ruby實例評估
編輯
想通了......
def set
self.instance_eval { yield if block_given? }
end
需要的是:
def set(&blk)
instance_eval(&blk)
end