scala中的`def`评估为什么?

问题描述 投票:1回答:1

我写的是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的情况下会发生什么。

scala lazy-evaluation
1个回答
0
投票

def不是变量,它成为方法,因此没有类型。但是,val成为Function2对象。如果需要,请看一些反编译的代码。

© www.soinside.com 2019 - 2024. All rights reserved.