Wie können zwei Argumente mit einer Ein-Argument-Signatur an eine Methode übergeben werden?

StackOverflow https://stackoverflow.com/questions/1435400

  •  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?

War es hilfreich?

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
scroll top