我有一个类似的功能对象:
object Doubler {
def apply(v: Int) = v*2
}
Doubler(1)
我还可以使用lambda类型扩展它:
object Doubler extends (Int=>Int) {...}
有什么不同吗?其背后的任何原因?
答案 0 :(得分:3)
区别在于您的第二个版本Doubler
实现了Int => Int
,而在第一个版本中却没有实现。
因此,在第二个版本中,类似val f: Int=>Int = Doubler
或someList.map(Doubler)
的版本将起作用,而第一个版本则无效。
答案 1 :(得分:0)
在第二个版本中,您的对象是一个函数,因此您可以在需要函数Int => Int
的任何地方使用它。
扩展(Int => Int)
或Function1[Int, Int]
是相同的。