Scala:为什么在计算时可以省略参数?

时间:2018-12-07 13:52:29

标签: scala

我有如下程序,例如,可以使用sum(x=>x)(1,2)来运行它。

我不明白的是,为什么我们可以在没有参数的最后一行写sumF?我找不到关于此的解释。

谢谢。

def sum(f: Int => Int) : (Int, Int) => Int = {
  def sumF(a:Int, b:Int) : Int = {
    if (a > b) 0
    else f(a) + sumF(a + 1, b)
  }
  sumF
}

1 个答案:

答案 0 :(得分:4)

sum函数的返回值是类型的函数

(Int, Int) => Int

sumF

  

在Scala中,如果没有返回值,则将最后一个表达式视为返回值。因此,如果最后一个表达式是您要返回的内容,则可以省略return关键字

您正在寻找的是一个高阶函数。 sum是一个函数,它接受一个函数f作为其参数,并返回一个带2个整数并返回一个Int的arity 2函数(这是sumF的确切类型签名)。