我正在关注tutorial,并一直阅读到loops
。从教程中,我希望得到:
Value of local variable is 1 Value of local variable is 2 Value of local variable is 1 Value of local variable is 2 Value of local variable is 1 Value of local variable is 2 ............................
但是我得到了这个
Value of local variable is 0
Value of local variable is 1
Value of local variable is 2
这是我使用的代码,与本教程完全相同
#!/usr/bin/ruby
for i in 0..5
retry if i > 2
puts "Value of local variable is #{i}"
end
我有什么想念吗?
答案 0 :(得分:2)
正如其他人所述,retry
现在仅限于rescue
个区块。如果您想重新制作示例,则必须将其包装在开始中……救援:
begin
for i in 0..5
raise "too big" if i > 2
puts "Value of local variable is #{i}"
end
rescue
retry
end
答案 1 :(得分:1)
您错过了这一点:从Ruby编程语言(2008年出版的一本书,由Matz合着,涵盖了Ruby 1.8和1.9):“(...)在Ruby 1.8中,retry
具有另一个用途:从一开始就开始基于迭代器的迭代(或任何方法调用),retry
语句的这种用法非常少见,并且已从Ruby 1.9中的语言中删除。被视为已弃用的语言功能,不应在新代码中使用。”(第152页)。
运行OP的代码至少在Ruby 2.3之后会导致语法错误。
Invalid retry (SyntaxError)