Scala&def的意思是什么?

时间:2014-06-01 21:51:26

标签: scala

在Scala中,everything is an object。甚至函数都是FunctionN类的子类。我们可以使用以下语法声明函数:

def foo(a:A, b:B):C = ...

其中A,B和C是类型。假设函数fooFunction2[A,B,C]的子类,它是否等同于

val foo = new Function2[A,B,C] { def apply(a:A, b:B) = ... }

此外,如果是这样,如何通用功能如

def bar[T](data:T)

使用val语法编写?

1 个答案:

答案 0 :(得分:-1)

使用val创建函数时,会在定义时对其进行评估。但是,使用def时,每次调用时都会创建并评估新的函数调用。

有关更多信息,请参阅herehere。如第一个链接所述,还有另一个

lazy val add: (Int, Int) => Int = ((a: Int, b: Int) => a + b)

第一次使用时会对此进行评估。