【问题标题】:In which context are blocks executed that are passed to a method in ruby?在哪个上下文中执行的块被传递给 ruby​​ 中的方法?
【发布时间】:2015-10-04 16:36:49
【问题描述】:

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

【问题讨论】:

    标签: ruby yield


    【解决方案1】:
    • 局部变量遵循词法范围。
    • 块变量在块内具有作用域。
    • 全局变量可以全局访问。
    • 其他一切都取决于获取块的方法。例如,instance_eval 在接收者的上下文中评估块。 class_eval 在接收器类的上下文中评估块。

    【讨论】:

    • 感谢您的回答,帮了大忙。您能否详细说明第一个要点?许多网站告诉我,在 ruby​​ 中搜索词法范围时,ruby 没有。
    • 一个例子是foo = 2; [:a].each{p foo}
    猜你喜欢
    • 2014-01-05
    • 2014-11-26
    • 1970-01-01
    • 1970-01-01
    • 2015-12-11
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 2011-04-03
    相关资源
    最近更新 更多