Kann procs in case-Anweisungen in Ruby 2.0 verwendet werden?

8

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?

    
Andrew Grimm 21.05.2013, 04:45
quelle

1 Antwort

20

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 von when -Klausel in einer case -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 ...

%Vor%

... 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.

%Vor%     
Phrogz 21.05.2013, 04:50
quelle

Tags und Links