在Ruby中,我如何在.each循环中跳过一个循环,类似于在其他语言中继续?
当前回答
接下来,它就像返回一样,但是是块!(所以你也可以在任何proc/lambda中使用这个。)
这意味着你也可以说next n从block中“返回”n。例如:
puts [1, 2, 3].map do |e|
next 42 if e == 2
e
end.inject(&:+)
结果是46。
注意return总是从最接近的def返回,而不是块;如果周围没有def,返回是一个错误。
故意在块内使用return from可能会令人困惑。例如:
def my_fun
[1, 2, 3].map do |e|
return "Hello." if e == 2
e
end
end
my_fun的结果是"Hello.",而不是[1,"Hello.", 2],因为return关键字属于外部的def,而不是内部的块。
其他回答
使用下一个:
(1..10).each do |a|
next if a.even?
puts a
end
打印:
1
3
5
7
9
对于其他冷却检查,请重做并重试。
也适用于朋友,如times, upto, downto, each_with_index, select, map和其他迭代器(更普遍的是块)。
欲了解更多信息,请参阅http://ruby-doc.org/docs/ProgrammingRuby/html/tut_expressions.html#UL。
接下来,它就像返回一样,但是是块!(所以你也可以在任何proc/lambda中使用这个。)
这意味着你也可以说next n从block中“返回”n。例如:
puts [1, 2, 3].map do |e|
next 42 if e == 2
e
end.inject(&:+)
结果是46。
注意return总是从最接近的def返回,而不是块;如果周围没有def,返回是一个错误。
故意在块内使用return from可能会令人困惑。例如:
def my_fun
[1, 2, 3].map do |e|
return "Hello." if e == 2
e
end
end
my_fun的结果是"Hello.",而不是[1,"Hello.", 2],因为return关键字属于外部的def,而不是内部的块。
推荐文章
- Rails中的OO设计:在哪里放置东西
- JavaScript错误(Uncaught SyntaxError:意外的输入结束)
- 在Bash中测试非零长度字符串:[-n "$var"]或["$var"]
- 给定一个类,查看实例是否有方法(Ruby)
- 我如何应用for-each循环到字符串中的每个字符?
- 在日历应用程序中建模重复事件的最佳方法是什么?
- 如何创建一个私有类方法?
- 我如何循环通过日期范围?
- Shell脚本for循环语法
- 无法安装pg gem
- 双* (splat)操作符做什么
- 如何使用Ruby on Rails进行HTTP请求?
- 这在PHP中意味着什么:->或=>
- C或c++中的单引号与双引号
- 如何从rake任务中提前返回?