gpt4 book ai didi

ruby - Kernel.loop 方法需要 'do' 。不允许使用分号?

转载 作者:数据小太阳 更新时间:2023-10-29 07:51:31 31 4
gpt4 key购买 nike

对于某些结构,我可以选择使用分号或 do用于分隔语句结尾的关键字,与 until 一样下面的示例。

until x == 100 do puts x; x+=1 end 

until x == 100; puts x; x+=1 end

但这对于 Kernel.loop 是不可能的.

x=0    
loop do puts x; x+=1; break if x == 100 end

x=0
loop; puts x; x+=1; break if x == 100 end # => error

为什么会这样?

最佳答案

  • loop 是一种方法(在 Kernel 中),它确实需要一个带有 do...end{ } 的 block
  • whileuntil 是语句(如 if),并且不需要 block 。 do 关键字是可选的,但它并不表示一个 block (例如 while x == 100 { puts x; x+=1; } 会惨败,而 loop { puts x; x+=1; break if x == 100 } 会工作得很好。)

因此,do 在这两种情况下意味着不同的事情。在 loop (和其他方法)的情况下,它实际上表示一个 block ;在 whileuntil 等情况下,它只是语法糖(就像 thenif 之后。 ) 不要被误导。

关于ruby - Kernel.loop 方法需要 'do' 。不允许使用分号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/641413/

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