【发布时间】:2014-11-28 15:43:45
【问题描述】:
我正在做以下 Ruby 教程http://rubymonk.com/learning/books/4-ruby-primer-ascent/chapters/41-exceptions/lessons/93-throw-and-catch。其中一项练习要求我:
更改最后一个示例以从名为的方法返回找到的图块 而是搜索。搜索应该接收平面图作为参数。
练习类似于上一个示例(练习前),看起来像:
candy = catch(:found) do
floor.each do |row|
row.each do |tile|
throw(:found, tile) if tile == "jawbreaker" || tile == "gummy"
end
end
end
puts candy
练习下面有个提示:
尝试将“catch”行替换为方法定义和 'throw' 行带有 'return'。
我这样做了:
candy = search do
floor.each do |row|
row.each do |tile|
return tile if tile == "jawbreaker" || tile == "gummy"
end
end
end
puts candy
但收到错误。谁能告诉我如何做才能获得积极的结果。还有一个问题:为什么在 throw / catch 代码中有 catch(:found) 和不同的 throw(:found, tile)?
【问题讨论】:
标签: ruby