本文翻译自:In Ruby, how do I skip a loop in a .each loop, similar to 'continue' [duplicate]

This question already has an answer here: 这个问题在这里已有答案:

  • Equivalent of “continue” in Ruby 7 answers 相当于Ruby 7答案中 的“继续”

In Ruby, how do I skip a loop in a .each loop, similar to continue in other languages? 在Ruby中,如何跳过.each循环中的循环,类似于在其他语言中continue


#1楼

参考:https://stackoom.com/question/HkV0/在Ruby中-如何跳过-each循环中的循环-类似于-continue-duplicate


#2楼

Use next : 使用next

(1..10).each do |a|next if a.even?puts a
end

prints: 打印:

1
3
5
7
9

For additional coolness check out also redo and retry . 如需额外的凉爽,请查看redo retry

Works also for friends like times , upto , downto , each_with_index , select , map and other iterators (and more generally blocks). 也适用于朋友喜欢timesuptodowntoeach_with_indexselectmap和其他迭代器(和更普遍块)。

For more info see http://ruby-doc.org/docs/ProgrammingRuby/html/tut_expressions.html#UL . 有关详细信息,请参阅http://ruby-doc.org/docs/ProgrammingRuby/html/tut_expressions.html#UL 。


#3楼

next - it's like return , but for blocks! next - 就像return一样,但对于积木! (So you can use this in any proc / lambda too.) (所以你也可以在任何proc / lambda使用它。)

That means you can also say next n to "return" n from the block. 这意味着您还可以说next n n从块中“返回” n For instance: 例如:

puts [1, 2, 3].map do |e|next 42 if e == 2e
end.inject(&:+)

This will yield 46 . 这将产生46

Note that return always returns from the closest def , and never a block; 请注意, return 总是从最接近的def返回,而不是块; if there's no surrounding def , return ing is an error. 如果没有周围的def ,则return是一个错误。

Using return from within a block intentionally can be confusing. 故意使用块内的return可能会令人困惑。 For instance: 例如:

def my_fun[1, 2, 3].map do |e|return "Hello." if e == 2eend
end

my_fun will result in "Hello." my_fun将导致"Hello." , not [1, "Hello.", 2] , because the return keyword pertains to the outer def , not the inner block. ,而不是[1, "Hello.", 2] ,因为return关键字属于外部def ,而不是内部块。

在Ruby中,如何跳过.each循环中的循环,类似于‘continue‘[duplicate]相关推荐

  1. java中的跳转语句_java中的跳转语句

    java中的跳转语句有两种:break和continue: 一.break语句 1. break语句适用于任何循环控制结构,从而是循环立即终止.当执行流程遇到break语句时,不管循环终止变量,或者布 ...

  2. java中程序跳转_java程序中先后台交互的两种实现方式以及页面之间的跳转

    虽然如今市面上很流行先后端分离,可是在不少企业中仍是使用的是SSH框架,先后端不分离. 那么此类先后端有其自身独特的先后台交互的方式,可是也支持js/jquery.下面对这两种方式作一下概括.java ...

  3. php实现QQ打开跳转浏览器,这个网站怎么实现在QQ与微信中打开跳转到浏览器中的?...

    [HTML] 纯文本查看 复制代码 点击右上角Safari打开 可以继续浏览本站哦~ 您也可以复制本站网址,到其它浏览器打开 点此继续访问 function openu(u){ document.ge ...

  4. vscode 快速调到定义处_vim技巧:在程序代码中快速跳转,在文件内跳转到变量定义处...

    本篇文章介绍 vim 的一些使用技巧: 在程序代码中快速跳转 在文件内跳转到变量定义处 在程序代码中快速跳转 在 vim 中查看代码文件时,可以使用下面命令在程序代码中快速跳转,提高效率. % 跳转到 ...

  5. Activity跳转到Navigation中的Fragment

    Activity跳转到Navigation中的Fragment 思路 首先跳转到Fragment所在的Activity中 在跳回到对应Activity中需要判断这个意图是从哪里到达的这里,所以需要一个 ...

  6. php跳过当前后续代码,PHP用continue跳过本次循环中剩余代码的注意点

    continue跳转语句用来跳过本次循环中指定条件的语句,并且继续执行其他的循环语句.下面这篇文章主要给大家介绍了关于在PHP中用continue跳过本次循环中剩余代码的一个注意点,文中的内容比较基础 ...

  7. php中循环跳过,php for循环的exit / break / continue /goto 停止、跳过循环、继续循环...

    php 与 JavaScript 有很多相似的地方: for循环中 也有两个相同: 只是 php 比 js 多了一个 exit , 其他用法一样: for($i =1;$i<11;$i++){ ...

  8. php跳过代码,PHP利用continue实现跳过本次循环中剩余代码的注意点

    continue跳转语句用来跳过本次循环中指定条件的语句,并且继续执行其他的循环语句.下面这篇文章主要给大家介绍了关于在PHP中用continue跳过本次循环中剩余代码的一个注意点,文中的内容比较基础 ...

  9. for循环中抛出异常_不要抛出循环!

    到目前为止,在本系列文章中,我一直专注于Scala对Java生态系统的忠诚度,向您展示Scala如何整合Java的大部分核心对象功能. 但是,如果Scala只是编写对象的另一种方式,那么它就不会像它那 ...

最新文章

  1. 专访@爱可可-爱生活:如何做好科学研究(干货满满)
  2. nginx的启动初始化过程(一)
  3. gmod的css模块放哪里,webpack打包css报错找不到模块?
  4. C++学习笔记:(七)C语言实现面向对象编程
  5. Ubuntu: ldconfig(解决*.so不是符号连接)
  6. IOS基础之iPad的屏幕旋转方向判断
  7. 前端开发入门站点推荐
  8. Hive with as语法
  9. mysql count 条件_MySQL的COUNT语句,竟然都能被面试官虐的这么惨?
  10. 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_16-CMS前端工程创建-导入系统管理前端工程...
  11. NCBI引物设计-查找目的基因前后序列方法、序列比对
  12. 能气死古人的诗歌改编
  13. Word文档进行XXE攻击
  14. python目标识别_10行Python代码实现目标检测
  15. 教你解决“邮件”应用不断提示输入密码的方法!
  16. 北信源华为鸿蒙概念,A股华为鸿蒙概念板块的股票有哪些
  17. 微型计算机m3500q,联想ThinkCentre M3500q超小商用台式机
  18. 马云质押阿里巴巴股票寻求贷款,要有大动作?旧闻新炒!
  19. 优思学院|六西格玛黑带的职责包括什么?
  20. PIL/Image的show()函数

热门文章

  1. LAMP-----2、php-5.3.27编译安装
  2. 通过HttpModule实现IP地址屏蔽功能
  3. 《Python语言程序设计》——2.11 类型转换和四舍五入
  4. OpenSSL生成RSA公私钥(java)
  5. Vmware+gdb调试Linux内核——工欲善其事,必先利其器
  6. Spring Boot 揭秘与实战(二) 数据缓存篇 - Guava Cache
  7. Web.config配置详解
  8. 未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序搜索
  9. 通过HTML5 Visibility API检测页面活动状态
  10. (转)C#中的Dictionary字典类介绍