为什么这样做:
a = [1, 2, 3]
while n = a.shift
puts n
end
虽然这不是:
a = [1, 2, 3]
puts n while n = a.shift
它只有在我提前初始化 n
时才有效:
a = [1, 2, 3]
n = nil
puts n while n = a.shift
最佳答案
一般来说,这是一个解释器问题,不会出现在具有本地 variable bubbling 的语言中,比如 javascript。
解释器(从左到右阅读)在任何提及之前遇到右手操作数 n
。
我越想越相信这是 ruby 解释器中的错误。正如@Cary 指出的那样,控制流程实际上是相同的:
a = [2, 3]
n = 1
puts n while n = a.shift
#⇒ 2
#⇒ 3
上面的输出中没有 1
的踪迹。
关于ruby 内联 while 与 while 结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32857497/