/ / Czy istnieje bardziej skuteczny sposób na wyrażenie tego, jeśli wyrażenie jest w scala - scala

Czy istnieje bardziej zwięzły sposób wyrażenia tego, jeśli ekspresja w scala-scala

Po prostu odkrywam Scala. Czy istnieje bardziej zwięzły i / lub bardziej idiomatyczny sposób napisania następującego kodu?

def getValToAdd(c: Char): Int = {
if ("(" == c) {
1
} else if (")" == c) {
-1
} else {
0
}
}

Odpowiedzi:

4 dla odpowiedzi № 1

Możesz usunąć wszystkie nawiasy klamrowe, są one zbędne:

def getValToAdd(c: Char): Int =
if ("(" == c) 1
else if (")" == c) -1
else 0

Ale znacznie bardziej idiomatycznym sposobem jest użycie Dopasowywanie wzorców

def getValToAdd(c: Char): Int = c match {
case "(" => 1
case ")" => -1
case _ => 0
}

Możesz również usunąć zwracany typ, kompilator może to rozwiązać:

def getValToAdd(c: Char) = c match {
case "(" => 1
case ")" => -1
case _ => 0
}

Ale nie polecałbym tego, chyba że jest to metoda prywatnej użyteczności.


0 dla odpowiedzi nr 2
def getValToAdd(c: Char): Int = c match {
case "(" => 1
case ")" => -1
case _ => 0
}