Ruby一行代码,中断一个块

Cyr*_*rus 1 ruby

我正在尝试编写一行代码来告诉我数组中是否有符合一组条件的元素然后中断为true.

例如

我有[1,2,3,4,5,6,7,8,9,10,11,12],我想找到第一个可以被2和3整除的元素.我想写一个衬里,一旦它达到6就会返回true而不处理数组中剩余的元素.

我可以为每个循环编写一个并打破,但我觉得应该有一种方法可以在一行代码中完成.

Mla*_*vić 5

any?:

[1,2,3,4,5,6,7,8,9,10,11,12].any?{|e| e % 2 == 0 && e % 3 == 0}
Run Code Online (Sandbox Code Playgroud)

或者你可以结合它all?并有一个很好的教程示例:

[1,2,3,4,5,6,7,8,9,10,11,12].any?{|e| [2, 3].all?{|d| e % d == 0}}
Run Code Online (Sandbox Code Playgroud)

如果您确实需要返回第一个匹配元素,请使用find:

[1,2,3,4,5,6,7,8,9,10,11,12].find{|e| [2,3].all?{|d| e % d == 0}}
# => 6 
Run Code Online (Sandbox Code Playgroud)