斯卡拉新手 - 如果 - 其他

时间:2016-09-23 03:57:45

标签: scala

scala方法获取输入,应该直接在输入上运行或计算它,例如考虑以下代码:

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

是否适合使用上述示例中的匿名函数或其他语法?

3 个答案:

答案 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)
}