Ich habe eine Funktion erstellt, um einen bestimmten Wert aus dem Pascal-Dreieck abzurufen, und ich habe if
Anweisungen verwendet. Jetzt möchte ich die Funktion umwandeln, um Mustervergleiche zu verwenden.Scala-Mustervergleich mit Tupel: Übereinstimmende gleiche Werte im Tupel
Meine if
basierte Funktion sieht wie folgt aus:
def valueAt(row: Int, column: Int): Int = {
// ...
else if (row == column) 1 // last column
//
}
Meine zweite Version dieser Funktion, Pattern-Matching verwendet, hat die folgende Signatur:
def valueAt2(row: Int, column: Int): Int = (row, column) match {
// ...
}
Ist es möglich, eine definieren case
für, wenn die row
und column
haben den gleichen Wert?
ich die gleichen Variablennamen in den case
, wie diese verwendet hat versucht:
case (x, x) => 1 // last column
Und ich habe auch versucht, den Wert der row
in der Spalte zu verwenden, wie folgt aus:
case (_, row) => 1 // last column
Aber sie funktionieren nicht. Im ersten Fall habe ich einen Kompilierungsfehler und in der zweiten sagt die IDE, dass ich die Variable row
von der match
überschattete.
Ist das möglich?
Danke.