Прежде всего, я нашел две полезные статьи в документах об этих методах:
- http://www.ruby-doc.org/core-1.9.3/Enumerable.html
- http://www.globalnerdy.com/2008/01/29/enumerating-rubys-enumerable-module-part-1-all-and-any/
все: передает каждый элемент коллекции в данный блок. Метод возвращает true, если блок никогда не возвращает false или nil.
any?: Пропускает каждый элемент коллекции к данному блоку. Метод возвращает true, если блок когда-либо возвращает значение, отличное от false или nil.
Но в случае пустых массивов и хэшей я получил:
irb(main):004:0> [nil, "car", "bus"].all?
=> false
irb(main):005:0> ["nil", "car", "bus"].all?
=> true
irb(main):006:0> [].all?
=> true
irb(main):007:0> ["nil", "car", "bus"].any?
=> true
irb(main):008:0> [nil, "car", "bus"].any?
=> true
irb(main):009:0> [nil].any?
=> false
irb(main):010:0> [].any?
=> false
Может кто-нибудь объяснить мне, почему пустые массивы дают мне false
в случае метода any?
и true
в случае all?
?