Ich erinnere mich daran, dass Procs in case
-Anweisungen in Ruby 2.0 erlaubt sind, aber ich kann es nicht googlen.
Ich habe versucht, Ruby 2.0.0 NEWS und Ссылка , aber der Link, den er für Keywords hatte, war für Ruby 1.9, nicht Ruby 2.0.
Sind procs in case-Anweisungen erlaubt?
Ja.
%Vor% Dies ist jedoch nicht anders als 1.9.1 seit Proc#===
wurde damals definiert. Da ruby-docs anscheinend Probleme damit hat, diese Methode zu zeigen, wird in der Dokumentation gesagt, dass proc === obj
:
Ruft den Block mit
obj
als proc-Parameter auf wie#call
. Es ist möglich, dass ein Proc-Objekt ein Ziel vonwhen
-Klausel in einercase
-Anweisung ist.
Für den Anfänger von Ruby übernimmt die when
-Klausel in Rubys case
-Anweisungen den Wert in der Klausel und ruft die Methode ===
auf, wobei das Argument an die case-Anweisung übergeben wird. Also, zum Beispiel, dieser Code ...
... führt /^cat/ === "cats"
aus, um zu entscheiden, ob es eine Übereinstimmung ist; Die RegExp
-Klasse definiert die ===
-Methode, um den Regex-Abgleich durchzuführen. Daher können Sie Ihr eigenes Objekt in einer when
-Klausel verwenden, solange Sie ===
dafür definieren.
Tags und Links ruby ruby-2.0 switch-statement