我写的是Scala Repl
def sum(a: Int, b: Int) = a + b
这被评估为副本中的sum: (a: Int, b: Int)Int
。懒惰地评估Scala中的def
。那么,Repl显示的类型是什么?另外,在调用sum(1,2)
时如何急切地评估此值,或者如何将(a: Int, b: Int)Int
评估为Int
?
[我在Scala中与val
一起玩时注意到了这一点。如果我写val sum = (a: Int, b: Int) = a + b
,它会被急切地评估为(Int, Int) => Int = <function2>
,因为可以进行apply
函数调用。但是我不明白在def
的情况下会发生什么。
def不是变量,它成为方法,因此没有类型。但是,val成为Function2对象。如果需要,请看一些反编译的代码。