Wie können zwei Argumente mit einer Ein-Argument-Signatur an eine Methode übergeben werden?
-
07-07-2019 - |
Frage
s = Proc.new {|x|x*2}
def one_arg(x)
puts yield(x)
end
one_arg(5, &s)
Wie geht es one_arg
wissen über &s
?
Lösung
Das &
Der Bediener verwandelt den Proc in einen Block, so wird er zu einer Ein-Argument-Methode mit einem Block (der aufgerufen wird yield
). Wenn Sie die aufgehört hätten &
Damit es den Proc direkt überschritten hätte, hätten Sie einen Fehler bekommen.
Andere Tipps
Durch das &s
, erzählst du one_arg
dass Sie Ihren Proc mögen möchten s
Als Block bestanden (bitte korrigieren Sie mich, wenn ich falsch liege). Eine äquivalente Schrift wäre sein
one_arg(5) do |x|
x *2
end
Es gab hier einige Fragen, so dass dies in letzter Zeit damit umgeht. August Lilleaas hat eine ziemlich schöne aufschreiben über einige der Feinheiten all dieser Rubin -Wahnsinn.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow