用于了解所有数组元素是否为特定方法返回true的语法糖?

时间:2012-04-16 18:36:03

标签: ruby-on-rails ruby arrays

在我的Ruby程序中,我有一个包含五个字符串的数组,我想检查该数组的每个元素是否与给定的需求相匹配,例如:

a = ['', '', '', '']
a.inject(:blank?) # Will return true if (and only if) all elements of a are blank

我问这个问题是因为Ruby有一个非常大的标准API,有很多预先编写的语法糖,我想知道并且不想重新发明。

2 个答案:

答案 0 :(得分:15)

有一种非常简洁的方式:

array.all? &:blank?

学习Enumerable并学习如何使用Enumerators,您将立即用最愉快的方式讲述Ruby。

答案 1 :(得分:0)

另一种方法是:如果你有String#to_proc(搜索它,因为我不会发布我自己的存储网站,以防被视为广告),你可以使用类似的方式:

a.inject(&'&& $1.blank?')

相当于

a.inject{ |sum,i|
  sum && i.blank?
}