ruby 内联 while 与 while 结束

标签 ruby while-loop inline

为什么这样做:

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/

相关文章:

java - while循环,似乎无法让它获得正确的数据

CSS 三个从左到右对齐的内联元素,如何占据所有可用宽度

java - 如何为节点迭代设置 do...while

forms - Bootstrap 3 删除内联输入之间的空格

css - 浏览器放大时如何防止CSS内联样式?

c++ - 使用 Rice 从 C++ 调用 Ruby block

ruby require_relative 给出 LoadError : cannot infer basepath inside IRB

mysql - 在 fork /线程应用程序中运行时,ActiveRecord 无法重新连接?

ruby - 在 Selenium WebDriver 中按 Ctrl + A

java - 将 2 个 boolean Controller 放入 do while 表达式中?