scala方法获取输入,应该直接在输入上运行或计算它,例如考虑以下代码:
def foo (b : Boolean, input : Any): Unit ={
val changedInput = {if (b) input else bar(input) }
dowork (changedInput)
}
是否适合使用上述示例中的匿名函数或其他语法?
答案 0 :(得分:4)
您的示例中没有匿名函数。你写的代码,IMO,就好了。
我猜您认为{if (b) input else bar(input) }
是匿名函数。它在scala中称为“块”,它只是一个表达式,其值是块中包含的最后一个表达式。例如,
{ expr1; expr2; expr3}
的值是expr3
的值。
所以你的代码可以写成
def foo (b : Boolean, input : Any): Unit ={
val changedInput = if (b) input else bar(input)
dowork (changedInput)
}
因为你的块中只有一个表达式。
答案 1 :(得分:0)
def foo(b: Boolean, input: Any): Unit =
dowork(if (b) input else bar(input))
答案 2 :(得分:0)
此{}
用于多行代码块,对于一行代码是可选的。 Scala中的匿名函数看起来像val square = { x: Int => x * x }
def foo (b : Boolean, input : Any): Unit = {
val changedInput = if (b) input else bar(input)
dowork (changedInput)
}