Muster, das mehrere Variablen abgleicht

8

Ich bin neu in F # und habe nirgends gesehen, wie man das Folgende richtig macht

%Vor%

Ich muss das mit dem Mustervergleich machen - für Hausaufgaben - aber ich weiß nicht, wie ich das richtig machen soll. Ich dachte, ich könnte Tupel wie folgt verwenden:

%Vor%

Aber das funktioniert auch nicht. Wie gehe ich vor?

    
Javier Lorenzini 13.03.2014, 13:27
quelle

3 Antworten

11

Sie haben die richtige Idee, Sie haben nur vergessen, dass der Einzug in F # zählt. Das Hinzufügen von Leerzeichen führt zu einer Lösung:

%Vor%

Dadurch werden Übereinstimmungen tatsächlich zweimal gemustert, daher sollten wir es vielleicht neu schreiben:

%Vor%

Der Compiler / Interpreter wird dies durchlassen, aber mit einer Warnung:

  

Warnung FS0025: Unvollständiges Muster stimmt mit diesem Ausdruck überein.

Ich werde es als eine Übung loswerden: -)

PS. Schön von dir, dass du Hausaufgaben gemacht hast.

    
Søren Debois 13.03.2014, 13:33
quelle
9

Søren Debois hat Recht. Hier sind ein paar andere Hinweise:

  1. a und b sind bereits im Gültigkeitsbereich, Sie müssen also nicht mit ihnen übereinstimmen, Sie können mit allem abgleichen:

    %Vor%
  2. Aus diesem Grund ist die Verwendung einer if-Anweisung möglicherweise idiomatischer.

  3. Sie vermissen eindeutig den Fall, wenn a + b = 0 ; Beachten Sie, dass der Compiler immer davon ausgeht, dass eine when-Klausel möglicherweise nichts abdeckt. Daher erhalten Sie immer noch eine Warnung, dass einige Fälle möglicherweise nicht behandelt werden, selbst wenn Sie eine | () when a + b = 0 -> ... case hinzufügen. Sie müssten stattdessen nur | () -> ... oder | _ -> ... verwenden.

  4. Es gibt eine integrierte Verknüpfung für Definitionen der Form let f <pattern> = match <same pattern> with |... , die let f = function |... ist. Du würdest es benutzen wie:

    %Vor%

    Beachten Sie, dass nun a und b nicht an die Funktionsdefinition gebunden sind, so dass die Idee aus meiner ersten Notiz nicht gilt und Sie sie in das Muster einführen müssen.

kvb 13.03.2014 13:43
quelle
2

Sie können die Übereinstimmungsklausel hinzufügen:

%Vor%

Bedecken Sie alle Fälle Ihres Musters als gute Praxis: -)

    
Mau 13.03.2014 14:20
quelle

Tags und Links