Sind Scala-Fallmuster erste Klasse?

8

Ist es möglich, Fallmuster als Parameter an andere Funktionen zu übergeben? Etwas wie das:

%Vor%     
fredoverflow 16.08.2012, 11:54
quelle

3 Antworten

3

Ich denke, Kim Stebels erste Antwort ist nahe daran, was Sie wollen. Ein Mustervergleich als solches ist in Scala kein isoliertes Gebilde. Eine Übereinstimmung kann als a Function1 oder PartialFunction definiert werden.

%Vor%

Test:

%Vor%

Alternativ verwenden Sie die Komposition:

%Vor%     
0__ 16.08.2012, 15:49
quelle
4

Sie möchten also einen Mustervergleichsblock an eine andere Funktion übergeben? Dies kann mit PartialFunction s geschehen, wie das folgende Beispiel zeigt:

%Vor%     
Kim Stebel 16.08.2012 12:20
quelle
0

Ihr magischer Typ kann als Strukturtyp geschrieben werden, der nicht angewendet werden kann. Je nachdem, welche Art von Extraktor Sie benötigen, benötigen Sie verschiedene Arten von unapply oder unapplySeq . Unten ist ein einfaches Beispiel.

%Vor%

Und so wird es für Listen gemacht:

%Vor%     
Kim Stebel 16.08.2012 14:45
quelle