[英]Is there a way to access a local variable defined inside a block outside the block?
[英]Accessing variable defined inside block
我有這個片段:
class MyClass
def self.callWithBlock (&block)
print block.blockVar
end
end
MyClass::callWithBlock do
blockVar = 'Hello'
end
這給了我一個錯誤:
in `callWithBlock': undefined method `blockVar' for #<Proc:0x000000017ed168@./block-test.rb:9> (NoMethodError)
from ./block-test.rb:9:in `<main>'
如何訪問此blockVar
?
如果在塊的末尾添加binding
,那將成為call
塊的結果,並且可以在綁定的上下文中eval
該塊中分配的任何局部變量。
class MyClass
def self.callWithBlock (&block)
print block.call.eval('blockVar')
end
end
MyClass::callWithBlock do
blockVar = 'Hello'
binding
end
# => Hello
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.