Die Nebenwirkungen sind die gleichen, was Ihr Reverse Engineering verwirrt.
Ja, beide iterieren über das Array (tatsächlich über alles, was sich in Enumerable mischt ), aber map gibt ein Array zurück, das aus den Blockergebnissen besteht, während jedes nur das ursprüngliche Array zurückgibt .
Der Rückgabewert jedes Arrays ist nur das ursprüngliche Array und wird im Ruby-Code selten verwendet, aber Map ist eines der wichtigsten funktionalen Werkzeuge .
Sie map
geben ein Array zurück, das die Ergebnisse des übergebenen Blocks oder der benannten Methode enthält. Beispielsweise:
2.2.3 :001 > [:how, :now, :brown, :cow].map &:to_s
=> ["how", "now", "brown", "cow"]
In diesem Fall habe ich keinen Block übergeben, sondern nur einen Symbol
. class Symbol
Objekte haben jedoch eine to_proc
Methode, die Folgendes ergibt:
[:how.to_s, :now.to_s, ...]
Übrigens fällt es Ihnen möglicherweise schwer, die Dokumentation zu finden, da map eine Methode in Enumerable ist, während jede (die eine vom Enumerable- Modul erforderliche Methode ) eine Methode in Array ist .
Als Trivia-Hinweis: Die Kartenimplementierung basiert auf jedem .