Mustervergleichsfunktionsargumente

8

Ich habe eine Frage bezüglich dieses Mustervergleichs in scala:

%Vor%

Ich habe verstanden, wie Pattern-Matching funktioniert und seine Syntax in scala, aber dieser Ausdruck macht mich verrückt. Wie weiß compiler, dass x und y Argumente der Funktion und des Musters auf ihnen sind?

    
Sayat Stb 09.11.2014, 11:33
quelle

1 Antwort

9

Die Regeln dafür sind im Abschnitt 8.5 "Pattern Matching Anonymous Functions" der Scala Language Specification. Wenn Sie eine anonyme Funktion mit Mustererkennung verwenden, muss der Typ teilweise bereitgestellt werden. Sie tun das, indem Sie sagen, der Typ ist (Double, Double) => Double , was eine Abkürzung für Function2[Double, Double, Double] ist.

Jetzt:

  

Wenn der erwartete Typ scala.Function k [S1,…,Sk, R] ist, wird angenommen, dass der Ausdruck der anonymen Funktion entspricht:

%Vor%

Unabhängig von der Funktion Ihrer Funktion wird die Musterübereinstimmung daher als Tupel der Argumente der Funktion übergeben. Daher können Sie die Syntax für reguläre Tupel-Extraktoren verwenden.

Ihr Beispiel ist also kurz

%Vor%

oder

%Vor%

Die Benennung der Extraktorparameter x und y liegt ganz bei Ihnen. Sie entscheiden, wie Sie die resultierenden Elemente des Extraktors aufrufen, Sie könnten auch case (foo, bar) => ...

schreiben     
0__ 09.11.2014, 12:58
quelle

Tags und Links