传递给 ruby 中的方法的块在哪个上下文中执行?

In which context are blocks executed that are passed to a method in ruby?

我了解到您可以将整个代码块传递给 ruby 中的方法。这个块可以从方法中执行。我的问题是:它将具有哪种上下文?它会像接收方法中的其他语句一样对待,还是像调用方方法中的语句一样对待?或者也许有特殊的第三种方式?

  • 局部变量遵循词法作用域。
  • 块变量在块内有作用域。
  • 全局变量可以全局访问。
  • 其他一切都取决于获取块的方法。例如,instance_eval 在接收方的上下文中评估块。 class_eval 在接收者 class 的上下文中评估块。