解释scala中函数内的函数

时间:2014-07-15 02:20:54

标签: scala

我是scala的新手,我看到了这段代码:

def sum(f: Int => Int)(a: Int, b: Int): Int = ...

我知道这个sum函数采用Ints类型的2个参数(a和b)的函数。

我是否正确地说:

sum 函数需要一个函数,因为我看到 def sum 之后的f:

我对 Int =>感到有些困惑。 Int 语法和 = 之前的最后:Int

右箭头左侧的 Int 表示什么?

右箭头右侧的Int类型是否表示:

  • sum 函数的返回值?
  • 或是否表示匿名函数的返回值

最后:Int = 表示 sum 函数的返回值是Int ??

类型

1 个答案:

答案 0 :(得分:0)

sum方法需要3个参数,在两个列表之间拆分,并返回Int。第一个参数列表用于获取Int并返回Int的函数。这使得sum成为一个更高阶的函数(在等同于方法和函数的松散意义上)。冒号意味着“类型”。

值得注意的是,函数和方法的返回值有不同的语法。这是因为函数是Scala中的值,因此它们的参数和返回类型必须由单个类型捕获,=>捕获它。方法不是值,它们的参数类型和返回类型分别标注。作为一个初学者,你可能会掩饰这一点,但我认为这对explore the distinction是值得的。