gpt4 book ai didi

ruby - 为什么我的 ruby​​ 脚本中出现无限循环?

转载 作者:行者123 更新时间:2023-12-02 02:33:44 27 4
gpt4 key购买 nike

根据描述,运算符||=只会赋值一次,但看起来每次都会这样做,并且我们有一个无限循环。 (使用Ruby 2.6.6p146)

loop do
fib ||= [0,1]
p fib
i = fib[-1] + fib[-2]
break if i >= 100
fib << i
p fib
end

# [0, 1]
# [0, 1, 1]
# [0, 1]
# [0, 1, 1]
# [0, 1]
# [0, 1, 1]
# ...

最佳答案

这是因为你的循环 do ... end 创建了一个新的 block scope .

如果您有一个外部变量fib,则行为会有所不同:

fib = nil
loop do
# ... your stuff here
end

在这种情况下,在 block 中调用 fib ||= 将更改外部 fib 变量(因为它位于外部作用域中)。

但是由于没有外部变量 fib,每次循环 block 运行时,fib 都会再次未定义。

关于ruby - 为什么我的 ruby​​ 脚本中出现无限循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64653498/

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