传递给 ruby 中的方法的块在哪个上下文中执行?
In which context are blocks executed that are passed to a method in ruby?
我了解到您可以将整个代码块传递给 ruby 中的方法。这个块可以从方法中执行。我的问题是:它将具有哪种上下文?它会像接收方法中的其他语句一样对待,还是像调用方方法中的语句一样对待?或者也许有特殊的第三种方式?
- 局部变量遵循词法作用域。
- 块变量在块内有作用域。
- 全局变量可以全局访问。
- 其他一切都取决于获取块的方法。例如,
instance_eval
在接收方的上下文中评估块。 class_eval
在接收者 class 的上下文中评估块。
我了解到您可以将整个代码块传递给 ruby 中的方法。这个块可以从方法中执行。我的问题是:它将具有哪种上下文?它会像接收方法中的其他语句一样对待,还是像调用方方法中的语句一样对待?或者也许有特殊的第三种方式?
- 局部变量遵循词法作用域。
- 块变量在块内有作用域。
- 全局变量可以全局访问。
- 其他一切都取决于获取块的方法。例如,
instance_eval
在接收方的上下文中评估块。class_eval
在接收者 class 的上下文中评估块。