我在意见中使用了琐碎的代码,例如这个
loop do
i++
break if i > 5
end
但是当我尝试运行时,我会得到void value expression break if i > 5
我在做什么错?这个错误是什么意思?
i = 0
loop do
i += 1
break if i > 5
end
是什么让您自行认为i++
有效Ruby Code?
尽管红宝石语法通常很容易猜测,但不要以为它类似于其他语言构造。
Ruby也有更好的模式可以做事。我的第二个例子是您想要的示例。
i = 0
loop do
i = i + 1 # or shorthand i += 1
puts i
break if i > 5
end
实际上这很重要。您的break
应该在开始。
更好的方法
1.upto 5 do |i|
puts i
end
这计算为5。
i++
可能是完全有效的。例如,
1++ 3
#=> 4
1++
3
#=> 4
那是因为这两种表达式都被解释为
1 + +3
,然后
1 + 3
#=> 4
因此,您的表达等于
loop do
i + (break if i > 5)
end
由于break if i > 5
不返回值,因此提出了void value
异常。
你想要
i = 0
loop do
i += 1
break if i > 5
end
i #=> 6
或(我的喜好)
i = 0
loop do
i += 1
raise StopIteration if i > 5
end
i #=> 6
内核#循环通过突破循环来处理StopIteration
例外。