【发布时间】:2014-03-11 12:11:32
【问题描述】:
我有一个关于 Ruby 解释器如何分配变量的问题:
我经常使用这个:
return foo if (foo = bar.some_method)
其中 some_method 返回一个对象或 nil。
但是,当我尝试这个时:
return foo if (true && (foo = bar.some_method))
我得到:NameError: undefined local variable or method foo for main:Object.
第一行和第二行的求值有什么不同导致第二行出错?
【问题讨论】:
-
因为在第二个变体中赋值会被短路。但是,嗯,我不确定这是一种有助于可读性的模式。
标签: ruby if-statement variable-assignment local-variables