2

我想知道,检查所有元素是否Array符合特定标准并返回布尔值的最简单方法是什么?Ruby 中是否有一种模式可以在集合上调用方法然后返回布尔值?标准Enumerable方法返回Arrayor nil,所以我不知道在哪里看。我写了一个使用 的例子grep,但我觉得if可以用更多的惯用代码跳过:

 def all_matched_by_regex?(regex)

     array_collection = ['test', 'test12', '12test']
     matched = array_collection.grep(regex)
     if matched.length == array_collection.length
        return true
     end
     return false
    end
4

2 回答 2

4

你试过Enumerable.all 吗?{块}?这似乎正是您正在寻找的。

编辑:

我的 Ruby 有点生锈,但这里有一个如何使用它的示例

  regex = /test/
=> /test/
   array_collection = ['test', 'test12', '12test']
=> ["test", "test12", "12test"]
   array_collection.all? {|obj| regex =~ obj}
=> true
于 2013-08-11T20:30:54.563 回答
0

你可以改变:

 if matched.length == array_collection.length
        return true
     end
     return false

只需返回:

matched.length == array_collection.length

像这样:

def all_matched_by_regex?(regex)    
   array_collection = ['test', 'test12', '12test']
   matched = array_collection.grep(regex)
   matched.length == array_collection.length
end
于 2013-08-11T20:31:29.153 回答