Andere Ruby Map Shorthand Notation
Ich bin mir bewusst, das Kürzel für die Karte, die sieht so aus:
[1, 2, 3, 4].map(&:to_s)
> ["1", "2", "3", "4"]
Mir wurde gesagt, dies ist die Kurzform für:
[1, 2, 3, 4].map{|i| i.to_s}
Macht dies absolut Sinn. Meine Frage ist: Es scheint, es sollte ein einfacher Weg, um zu schreiben:
[1, 2, 3, 4].map{|x| f.call(x)}
für einige Verfahren f. Ich kenne den Weg, den ich gerade eingegeben haben, gar nicht so lange, um mit zu beginnen, aber ich würde behaupten, dass weder das Vorherige Beispiel, für die das Kürzel existiert. Dieses Beispiel scheint nur wie die Ergänzung zu dem ersten Beispiel: Anstatt zu callen ich die to_s-Methode für jeden ich möchte ich nennen f für alle x.
Solch ein Kürzel vorhanden ist?
InformationsquelleAutor der Frage trh178 | 2012-01-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Leider ist diese Kurznotation (die calls "- Symbol#to_proc") nicht über eine Möglichkeit, Argumente an die Methode oder der block aufgerufen wird, also könnte man nicht auch Folgendes tun:
ABER, Sie sind im Glück, weil Sie nicht wirklich benötigen diese Verknüpfung zu tun, was Sie zu tun versuchen. Das kaufmännische und-Zeichen umwandeln kann ein Proc oder Lambda-Ausdruck in einen block, und Umgekehrt:
Beachten Sie das fehlen des Dickdarms vor
my_routine
. Das ist, weil wir nicht wollen, zu konvertieren, die:my_routine
symbol in ein proc, durch das finden der Methode und ruft.method
auf, sondern wir möchten, konvertieren Sie diemy_routine
Proc in einem block und übergeben es anmap
.Kennen, kannst du sogar anzeigen eines nativen Ruby-Methode:
Den
method
Methode würde diep
Methode und wandeln es in ein Proc, und die&
wandelt es in einen block übergeben bekommt, ummap
. Als Ergebnis, jedes Element wird gedruckt. Dies ist das äquivalent von:InformationsquelleAutor der Antwort coreyward