Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我的ruby脚本中有一个无限循环?_Ruby - Fatal编程技术网

为什么我的ruby脚本中有一个无限循环?

为什么我的ruby脚本中有一个无限循环?,ruby,Ruby,根据描述,运算符| |=将分配值​​只有一次,但看起来它每次都这样,我们有一个无限循环。(使用Ruby 2.6.6p146) loop do fib | |=[0,1] p纤维 i=fib[-1]+fib[-2] 如果i>=100,则中断 fib这是因为你的循环。。。结束创建一个新的 如果有外部变量fib,则行为不同: fib = nil loop do # ... your stuff here end 在这种情况下,在块中调用fib | |=将更改外部fib变量(因为它在外部范围内)

根据描述,运算符
| |=
将分配值​​只有一次,但看起来它每次都这样,我们有一个无限循环。(使用Ruby 2.6.6p146)

loop do
fib | |=[0,1]
p纤维
i=fib[-1]+fib[-2]
如果i>=100,则中断

fib这是因为你的
循环。。。结束
创建一个新的

如果有外部变量fib
,则行为不同:

fib = nil
loop do
  # ... your stuff here
end
在这种情况下,在块中调用
fib | |=
将更改外部
fib
变量(因为它在外部范围内)


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

fib
在每次迭代的块结束时超出范围,因此在下一次迭代中它将是
nil
。将
fib=[0,1]
放在循环之前。
fib = nil
loop do
  # ... your stuff here
end