Крутой способ вызова методов для нескольких объектов в Ruby? - PullRequest
6 голосов
/ 18 декабря 2008

Давным-давно я видел этот трюк в Ruby. Вместо того, чтобы делать (например)

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

Вы можете вызвать все объекты одновременно и добавить операцию в конце, вроде

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

Но я думаю, что это было проще, чем ... или, может быть, так. Я действительно не знаю, но именно поэтому мне интересно это выяснить. Спасибо.

Ответы [ 4 ]

13 голосов
/ 18 декабря 2008

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

Я думаю, это то, что вы ищете

8 голосов
/ 18 декабря 2008

Вы можете использовать Symbol # to_proc, если вы используете Rails или Ruby 1.9:

[array1, array2, array3].all?(&:empty?)
2 голосов
/ 18 декабря 2008

Дж Купер правильно понял, но просто добавил сноску:

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

% w берет строку и разбивает ее на пустое пространство, чтобы вернуть вам массив строк

1 голос
/ 18 декабря 2008

С другой стороны, Symbol # to_proc может иметь проблемы с производительностью, поэтому используйте его в тех случаях, когда читаемость того стоит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...