【发布时间】:2012-11-06 11:17:48
【问题描述】:
首先,我在有关这些方法的文档中找到了两篇有用的文章:
- 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/
all?:将集合的每个元素传递给给定的块。如果该块从不返回 false 或 nil,则该方法返回 true。
any?:将集合的每个元素传递给给定的块。如果该块曾经返回 false 或 nil 以外的值,则该方法返回 true。
但如果我得到的是空数组和哈希:
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? 的情况下?
【问题讨论】:
-
在数学术语中:
any?是逻辑 OR 的折叠,其标识元素为false。另一方面,all?是逻辑 AND 的折叠,其标识元素是true。 en.wikipedia.org/wiki/Identity_element
标签: ruby-on-rails ruby enumeration