Ruby中的下一步是什么?

以下代码有效:

collection.each do |i|
  begin
    next if i > 10
    i += 1
  rescue
    puts "could not process #{ i }"
  end
end

但是,当我们重构时:

collection.each do |i|
  begin
    increment i
  rescue
    puts "could not process #{ i }"
  end
end

def increment i
  next if i > 10
  i += 1
end

我得到无效的下一个错误.这是Ruby(1.9.3)的限制吗?

如果increment方法中有异常,begin rescue block的工作方式是否相同?

最佳答案
您的下一个语句必须在循环内发生.增量方法中没有循环.

异常将“冒泡”,因此如果您的增量方法中存在异常,它将被调用方法的救援部分捕获.

转载注明原文:Ruby中的下一步是什么? - 代码日志