Nev*_*ves 5 ruby inline while-loop
为什么这样做:
a = [1, 2, 3]
while n = a.shift
puts n
end
Run Code Online (Sandbox Code Playgroud)
虽然这没有:
a = [1, 2, 3]
puts n while n = a.shift
Run Code Online (Sandbox Code Playgroud)
它只有在我n提前初始化时才有效:
a = [1, 2, 3]
n = nil
puts n while n = a.shift
Run Code Online (Sandbox Code Playgroud)
也就是说,一般来说,解释器问题不会出现在具有局部变量冒泡的语言中,例如 javascript。
\n\n解释器(从左到右阅读)n在提及右手操作数之前先遇到它。
我想得越多,我就越确信这是 ruby 解释器中的一个错误。正如@Cary 指出的,控制流程实际上是相同的:
\n\na = [2, 3]\nn = 1\nputs n while n = a.shift\n#\xe2\x87\x92 2\n#\xe2\x87\x92\xc2\xa03\nRun Code Online (Sandbox Code Playgroud)\n\n1上面的输出中没有任何痕迹。