从外部方法在Ruby循环上调用next

当量8

在Ruby中,很容易告诉循环转到下一个项目

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

结果=>

1
3   
5
7
9

但是,如果我需要从循环外部调用下一步(例如:方法),该怎么办?

def my_complex_method(item)
  next if item.even?  # this will obviously fail 
end

(1..10).each do |a|
  my_complex_method(a)
  puts a
end

我发现并工作的唯一解决方案是在SO问题中使用throwcatchlike如何打破Ruby中的外部循环?

def my_complex_method(item)
  throw(:skip) if item.even? 
end

(1..10).each do |a|
  catch(:skip) do   
    my_complex_method(a)
    puts a
  end
end

我的问题是:任何人都可以通过更多的解决方案来解决此问题?throw/catch唯一的方式做到这一点?

还有,如果我my_complex_method不仅要在该循环的一部分中调用(=>不要抛出:skip),我还能以某种方式告诉我从循环中调用它的方法吗?

MurifoX

您的复杂方法可能返回一个布尔值,然后像这样在循环中进行比较:

def my_complex_method(item)
  true if item.even? 
end

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

一种简单的方法,但与尝试捕获方法不同。

更新

由于item.even?已经返回了布尔值,因此不需要该true if item.even?部分,可以执行以下操作:

def my_complex_method(item)
  item.even? 
end

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有没有更简洁的方法可以在Ruby中的地图上调用外部方法?

来自分类Dev

从方法内部调用next进行外循环

来自分类Dev

在for循环上调用条件(C ++)

来自分类Dev

Xpages - 在 java 类“java.util.AbstractList$SimpleListIterator”上调用方法“next()”时出错

来自分类Dev

Ruby在对象上调用方法,而不是将对象作为方法的参数传递

来自分类Dev

如何在用户控件的aspx页面上调用外部javascript方法

来自分类Dev

如何在用户控件的aspx页面上调用外部javascript方法

来自分类Dev

使用“next”方法跳过 Ruby 中 .each 循环中的项目

来自分类Dev

在Android上调用方法的费用

来自分类Dev

在泛型上调用方法?

来自分类Dev

在FormClosed事件上调用方法?

来自分类Dev

在数组中的每个对象上调用函数的最佳方法?没有for循环?

来自分类Dev

Rails 4:使用JavaScript / jQuery在用户输入上调用ruby额外的类方法

来自分类Dev

ruby / rails:如何访问在关联上调用的类方法内的实例

来自分类Dev

如何区分在隐式接收器上调用的方法和Ruby中的变量?

来自分类Dev

Ruby:在返回的对象上调用方法以检测是否使用了包装器

来自分类Dev

ruby / rails:如何访问在关联上调用的类方法内的实例

来自分类Dev

如何区分在隐式接收器上调用的方法和Ruby中的变量?

来自分类Dev

在current_user上调用name方法会导致测试错误(ruby on rails)

来自分类Dev

在String对象上调用参数方法时,为什么Ruby输出[[:rest]]?

来自分类Dev

在C ++中的方法上调用方法

来自分类Dev

在构造函数方法上调用方法

来自分类Dev

在子组件上调用方法的替代方法?

来自分类Dev

在构造函数方法上调用方法

来自分类Dev

如何在RxJS Observable上调用next和error

来自分类Dev

通过JQuery在外部域上调用RESTful服务

来自分类Dev

使用Emacs在光标下的链接上调用外部程序

来自分类Dev

检查是否在EasyMock上调用了方法

来自分类Dev

在管道对象上调用属性/方法

Related 相关文章

  1. 1

    有没有更简洁的方法可以在Ruby中的地图上调用外部方法?

  2. 2

    从方法内部调用next进行外循环

  3. 3

    在for循环上调用条件(C ++)

  4. 4

    Xpages - 在 java 类“java.util.AbstractList$SimpleListIterator”上调用方法“next()”时出错

  5. 5

    Ruby在对象上调用方法,而不是将对象作为方法的参数传递

  6. 6

    如何在用户控件的aspx页面上调用外部javascript方法

  7. 7

    如何在用户控件的aspx页面上调用外部javascript方法

  8. 8

    使用“next”方法跳过 Ruby 中 .each 循环中的项目

  9. 9

    在Android上调用方法的费用

  10. 10

    在泛型上调用方法?

  11. 11

    在FormClosed事件上调用方法?

  12. 12

    在数组中的每个对象上调用函数的最佳方法?没有for循环?

  13. 13

    Rails 4:使用JavaScript / jQuery在用户输入上调用ruby额外的类方法

  14. 14

    ruby / rails:如何访问在关联上调用的类方法内的实例

  15. 15

    如何区分在隐式接收器上调用的方法和Ruby中的变量?

  16. 16

    Ruby:在返回的对象上调用方法以检测是否使用了包装器

  17. 17

    ruby / rails:如何访问在关联上调用的类方法内的实例

  18. 18

    如何区分在隐式接收器上调用的方法和Ruby中的变量?

  19. 19

    在current_user上调用name方法会导致测试错误(ruby on rails)

  20. 20

    在String对象上调用参数方法时,为什么Ruby输出[[:rest]]?

  21. 21

    在C ++中的方法上调用方法

  22. 22

    在构造函数方法上调用方法

  23. 23

    在子组件上调用方法的替代方法?

  24. 24

    在构造函数方法上调用方法

  25. 25

    如何在RxJS Observable上调用next和error

  26. 26

    通过JQuery在外部域上调用RESTful服务

  27. 27

    使用Emacs在光标下的链接上调用外部程序

  28. 28

    检查是否在EasyMock上调用了方法

  29. 29

    在管道对象上调用属性/方法

热门标签

归档