Ruby 捕捉/尝试块不';我不能用红宝石跑步
运行以下Ruby代码片段时出现语法错误Ruby 捕捉/尝试块不';我不能用红宝石跑步,ruby,Ruby,运行以下Ruby代码片段时出现语法错误 catch(:outer) m, n = 1,1 loop do catch(:inner) for i in 3 .. 100 m, n = (m*2), m throw :outer if m > 9_999 throw :inner if m > 5_000 end # for-loop end # catch
catch(:outer)
m, n = 1,1
loop do
catch(:inner)
for i in 3 .. 100
m, n = (m*2), m
throw :outer if m > 9_999
throw :inner if m > 5_000
end # for-loop
end # catch(:inner)
end # loop
end # catch(:outer)
#=> syntax error, unexpected keyword_end, expecting $end
它不喜欢结尾的两个
end
语句。有什么问题吗?在catch
之后没有与结尾匹配的do
。end
必须与do
或关键字匹配(例如类
,模块
,开始
)。捕获是一种方法,而不是关键字。正确的语法是:
catch(:outer) do
m, n = 1,1
loop do
catch(:inner) do
for i in 3 .. 100
m, n = (m*2), m
throw :outer if m > 9_999
throw :inner if m > 5_000
end # for-loop
end # catch(:inner)
end # loop
end # catch(:outer)
ruby块与do端对或{}匹配,
catch-end不是像for-end那样的ruby语句请考虑catch-value-do..
语法。是的,这就是罪魁祸首。非常感谢