In Ruby weiß ich, wenn ich das tue:
%Vor%Es ist dasselbe wie
%Vor% Das heißt, &:foo
erstellt den Block { |obj| obj.foo }
, wandelt ihn in einen Proc um und übergibt ihn an jeden. Warum funktioniert das? Ist es nur ein spezieller Ruby-Fall oder gibt es einen Grund, warum das so funktioniert?
Ihre Frage ist sozusagen falsch. Was hier passiert ist nicht "kaufmännisches Und-Zeichen", sondern "kaufmännisches Und-Objekt". Der Doppelpunkt ist in diesem Fall für das Symbol. Also, es gibt &
und es gibt :foo
.
Das &
ruft to_proc
für das Objekt auf und übergibt es als Block an die Methode. In Rails wird to_proc
auf Symbol
implementiert, sodass diese beiden Aufrufe äquivalent sind:
Außerdem ist to_proc
auf Symbol
in Ruby 1.8.7 und 1.9 implementiert, also ist es tatsächlich ein "Ruby-Ding".
Also, um es zusammenzufassen: &
ruft to_proc
für das Objekt auf und übergibt es als Block an die Methode, und Ruby implementiert to_proc
für Symbol
.
Die Kombination aus kaufmännischem Und-Zeichen und Symbol ist nichts Besonderes. Hier ist ein Beispiel, dass (ab) die Regex verwendet:
%Vor%Oder ganze Zahlen.
%Vor% Wer braucht arr.map(&:fifth)
wenn du arr.map &4
hast?
Tags und Links ruby