簡體   English   中英

訪問塊內定義的變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM