ruby ' s "?" und "?" - Methoden Verhalten auf Leere Arrays und Hashes
Zunächst fand ich zwei nützliche Artikel in Dokumentationen über diese Methoden:
- 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/
alle?: Übergibt jedes element der Kollektion um den block. Die Methode gibt true zurück, wenn der block nie zurückgibt, false oder nil.
?: Übergibt jedes element der Kollektion um den block. Die Methode gibt true zurück, wenn der block immer wieder einen anderen Wert als false oder nil ist.
Aber im Falle eines leeren arrays und hashes, die ich bekam:
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
Kann jemand mir erklären, warum leere arrays geben Sie mir false
im Falle der any?
Methode und true
im Falle von all?
?
In mathematischen Begriffen:
any?
ist eine Falte von logischen ODER deren Identität element ist false
. Auf der anderen Seite all?
ist eine Falte von logischen UND deren Identität element ist true
. en.wikipedia.org/wiki/Identity_elementInformationsquelleAutor y4roslav | 2012-11-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
So, da der block nie aufgerufen wird, ist es natürlich nie gibt false zurück, oder null, so
all
true zurück.Das gleiche gilt für
any
:Da der block nie aufgerufen wird, es nie wieder einen anderen Wert als false oder nil ist, so
any
gibt false zurück.InformationsquelleAutor Kim Stebel