Arrays 如何检查数组的所有元素是否满足条件?
我正在使用Ruby 2.4。如何检查数组的所有元素是否满足条件?我有Arrays 如何检查数组的所有元素是否满足条件?,arrays,ruby,conditional-statements,Arrays,Ruby,Conditional Statements,我正在使用Ruby 2.4。如何检查数组的所有元素是否满足条件?我有 cond = true arr.each do |e| if e.nil? || e.to_i < 5 cond = false break end end cond=true 每道菜都有| 如果e.nil?| |e、 至i
cond = true
arr.each do |e|
if e.nil? || e.to_i < 5
cond = false
break
end
end
cond=true
每道菜都有|
如果e.nil?| |e、 至i<5
cond=false
打破
终止
终止
但我觉得有一个更有效的方法来做这件事
如何检查数组的所有元素是否满足条件
使用all?
。例如:
[1, 2, 3].all? { |i| i < 4 } #=> true
[1,2,3]。所有人?{| i | i<4}#=>正确
如何检查数组的所有元素是否满足条件
使用all?
。例如:
[1, 2, 3].all? { |i| i < 4 } #=> true
[1,2,3]。所有人?{| i | i<4}#=>正确
您可以将其重写为
arr.all? { |e| e.to_i >= 5 }
你可以把它改写成
arr.all? { |e| e.to_i >= 5 }
看起来
i
可以为零。看起来i
可以为零。是的,很好:)问题是,“如何检查数组中的所有元素是否满足条件?”。您的答案是OP给出的特定示例的解决方案,而不是一般的解决方案,因此它的用处有限。例如,假设您只知道arr
是任何对象的数组,obj
,其中可能包括nil
,并且以方法m
的形式给出了一个条件,该方法将obj
作为参数,并返回true
或false
。然后你可以写arr.all?{| obj |!obj.nil?&m(obj)}
。这个评论也适用于其他答案。是的,很好:)问题是,“如何检查数组中的所有元素是否满足条件?”。您的答案是OP给出的特定示例的解决方案,而不是一般的解决方案,因此它的用处有限。例如,假设您只知道arr
是任何对象的数组,obj
,其中可能包括nil
,并且以方法m
的形式给出了一个条件,该方法将obj
作为参数,并返回true
或false
。然后你可以写arr.all?{| obj |!obj.nil?&m(obj)}
。这一评论也适用于其他答案。