gpt4 book ai didi

ruby - 令人惊讶的 Ruby 范围与 while 循环

转载 作者:太空宇宙 更新时间:2023-11-03 16:59:01 25 4
gpt4 key购买 nike

(1)

a = [1, 2]
while b = a.pop do puts b end

输出

2
1

(2)

a = [1, 2]
puts b while b = a.pop

导致错误

undefined local variable or method `b'

(3)

b = nil
a = [1, 2]
puts b while b = a.pop

输出

2
1

这是怎么回事?为什么 #2 中 b 的范围与其他任何一个都不同?

$ ruby --version
ruby 1.9.3p484 (2013-11-22 revision 43786) [x86_64-linux]

编辑:最初我将 irb 的行为列为不同的。不是;我在一个“脏” session 中工作。

最佳答案

变量由词法解析器声明到它们的作用域,这是线性的。在 while b = a.pop do puts b end 中,赋值 (b = a.pop) 在使用 (puts b)。在第二个示例中,puts b while b = a.pop,在定义仍然未知时看到使用,这会产生错误。

关于ruby - 令人惊讶的 Ruby 范围与 while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40330999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com