在Ruby中调用多个对象的方法很酷的方法?

时间:2008-12-18 08:45:02

标签: ruby object methods

很久以前我在Ruby中看过这个技巧。而不是做(例如)

if array1.empty? and array2.empty? and array3.empty?

你可以一次调用所有对象并在最后附加操作,有点像

if %w(array1 array2 array3).each { |a| a.empty? }

但我觉得它比那简单......或者,它可能就是那样。我真的不知道,但这就是为什么我有兴趣找到答案。感谢。

4 个答案:

答案 0 :(得分:13)

if [array1, array2, array3].all? { |a| a.empty? }

我认为这就是你要找的东西

答案 1 :(得分:8)

如果您使用的是Rails或Ruby 1.9,则可以使用Symbol#to_proc:

[array1, array2, array3].all?(&:empty?)

答案 2 :(得分:2)

J Cooper说得对,但只是添加一个脚注:

%w(array1 array2 array3) # => ["array1", "array2", "array3"]

%w接受一个字符串并在空格上拆分它以返回一个字符串数组

答案 3 :(得分:1)

另一方面,Symbol#to_proc可能存在性能问题,因此在可读性值得的情况下使用它。