7

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

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

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

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

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

4

4 回答 4

14

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

我想这就是你要找的

于 2008-12-18T09:02:48.250 回答
8

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

[array1, array2, array3].all?(&:empty?)
于 2008-12-18T09:47:47.427 回答
2

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

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

%w 接受一个字符串并将其拆分为空格以返回一个字符串数组

于 2008-12-18T09:39:49.063 回答
1

附带说明一下,Symbol#to_proc 可能存在性能问题,因此在值得阅读的情况下使用它。

于 2008-12-18T15:39:33.317 回答