Wie benutzt man eine Musterübereinstimmung um eine nicht leere Liste in scala zu erhalten?

8

Ich benutze case x :: Nil => ... versuchen, um sicherzustellen, dass die Liste nicht leer ist, aber es stimmt nur einzelne Elementliste.Wie kann ich verwenden Mustervergleich erhalten eine nicht leere Liste?

AKTUALISIERT
Es tut mir leid, es scheint, ich verliere etwas, es gibt eine spezielle Szene, die das Spiel innerlich verwendet,

%Vor%

Wie kann ich accountResult abgleichen, welcher List [String] (x :: _) Wert ist nicht Nil? und dann den übereinstimmenden List [String] -Wert

erhalten     
LoranceChen 04.01.2016, 05:36
quelle

4 Antworten

11

Anstatt nur die leere Liste mit Nil anzugeben, geben Sie etwas an, das eine beliebige Liste sein kann, zB:

%Vor%

oder einfach:

%Vor%

wenn Sie sich nicht um den Schwanz kümmern oder ihn nicht benutzen werden.

Diese Muster passen zu jeder Liste mit mindestens einem Element (anstatt genau einem Element gemäß Ihrem vorhandenen Muster). Ähnlich das Muster:

%Vor%

entspricht einer Liste mit mindestens zwei Elementen.

Bearbeiten (Antwort auf Ihren Kommentar):

Sie können einer Variable innerhalb eines Fallmusters mit " @ " zuweisen. Also, für (eine typische Verwendung) Beispiel, das Sie vielleicht schon gesehen haben:

%Vor%

oder, passend zur gewünschten Verwendung, nach Ihrem Kommentar:

%Vor%     
Shadowlands 04.01.2016, 05:49
quelle
11

Um zu überprüfen, ob die Liste nicht leer ist, können Sie das Muster folgendermaßen anpassen:

%Vor%

Oder

%Vor%     
Nyavro 04.01.2016 05:50
quelle
2

Wenn Sie dies häufig verwenden, können Sie einen benutzerdefinierten Matcher wie diesen erstellen:

%Vor%

Dies kann wie folgt verwendet werden:

%Vor%     
thoredge 04.01.2016 07:42
quelle
1

Wenn Sie nur eine ganze nicht leere Liste einem Wert zuweisen möchten, ohne Kopf und Schwanz zu trennen, fügen Sie einfach einen Fall hinzu, der einer leeren Liste entspricht, und einen anderen, der die Liste einem Variablennamen wie folgt zuordnet:

%Vor%

Nil führt den Job ebenfalls aus und vergleicht eine leere Liste

%Vor%     
Visiedo 18.12.2017 10:55
quelle

Tags und Links