Prima di tutto ho trovato due articoli utili in documentazioni su questi metodi:ruby's "any?" e tutto?" comportamento metodi sugli array e hash vuoti
- 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/
tutto ?: passa ogni elemento del raccolta al blocco dato. Il metodo restituisce true se il blocco non restituisce mai false o nil.
any ?: Passa ogni elemento della raccolta al blocco indicato. Il metodo restituisce true se il blocco restituisce mai un valore diverso da false o nil.
Ma in caso di array e hash vuoti ho ottenuto:
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
Qualcuno può spiegare a me perché le matrici vuote mi danno false
nel caso del metodo any?
e true
in caso di all?
?
In termini matematici: "any?" È una piega di OR logico il cui elemento di identità è 'false'. D'altra parte 'all?' È una piega di AND logico, il cui elemento di identità è 'true'. http://en.wikipedia.org/wiki/Identity_element – tokland