2016-09-23 3 views
0

A scala Methode eine Eingabe erhält und sollte entweder auf dem Eingang direkt oder einer Berechnung davon, zum Beispiel betrachten Sie den folgenden Code:Scala Neuling - if-else

def foo (b : Boolean, input : Any): Unit ={ 
    val changedInput = {if (b) input else bar(input) } 
    dowork (changedInput) 
} 

Ist es angemessen, eine anonyme zu verwenden Funktion wie im obigen Beispiel oder dort eine andere Syntax?

+0

Es gibt keine anonyme Funktion in diesem Beispiel. –

Antwort

4

In Ihrem Beispiel gibt es keine anonyme Funktion. Und der Code, den Sie schreiben, IMO, ist in Ordnung.

Ich denke, Sie betrachten {if (b) input else bar(input) } als anonyme Funktion. Es wird in scala "block" genannt, was nur ein Ausdruck ist, dessen Wert der letzte im Block enthaltene Ausdruck ist. Zum Beispiel

Der Wert { expr1; expr2; expr3} ist der Wert expr3. So können Sie Ihren Code wie

def foo (b : Boolean, input : Any): Unit ={ 
    val changedInput = if (b) input else bar(input) 
    dowork (changedInput) 
} 

geschrieben werden, da es nur einen Ausdruck in dem Block.

0
def foo(b: Boolean, input: Any): Unit = 
    dowork(if (b) input else bar(input)) 
0

Diese {} wird für mehrzeiligen Codeblock verwendet und ist optional für einen Zeilencode. Anonyme Funktion in Scala sieht so aus val square = { x: Int => x * x }

def foo (b : Boolean, input : Any): Unit = { 
    val changedInput = if (b) input else bar(input) 
    dowork (changedInput) 
}