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 № 1Moż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
}