我知道空字符串会被认为是真实的,因为只有nil和false被认为是假的。但我有一个像这样的空字符串数组:
["", "", ""].any?
=> true
如果数组中的所有字符串都为空,我希望它返回false。一种选择是:
["", "", ""].select {|item| item.present? }.any?
=> false
但是现在我在这个例子中使用了两个迭代器。这是唯一的方法吗?或者是否有工具库中的另一个迭代器可以满足这项工作的需要?
答案 0 :(得分:4)
any
应该采取阻止措施,因此您应该可以执行以下操作:
["", "", ""].any? {|item| item.present?}
可以使用present?
符号上的to_proc
方法缩短此信用额度(credit:@mu is too short,2018):
['','',''].any?(&:present?)
答案 1 :(得分:1)
你可以写
arr.join != ''
答案 2 :(得分:0)
在我的脑海中,逻辑就像是,“它们并非都是空的”所以我会把
arr = ["","",""]
!arr.all?(&:empty?)
=> false
在字符串上使用.present?
在我的测试环境中不起作用。