扩展 `Function` 类型和不扩展有什么区别?
What is the difference of extending `Function` type and not extending?
我有一个功能对象,例如:
object Doubler {
def apply(v: Int) = v*2
}
当我这样做时它有效Doubler(1)
我也可以用 lambda 类型扩展它:
object Doubler extends (Int=>Int) {...}
有区别吗?背后有什么原因吗?
不同之处在于,在您的第二个版本中 Doubler
实现了 Int => Int
,而在第一个版本中则没有。
所以对于第二个版本,像 val f: Int=>Int = Doubler
或 someList.map(Doubler)
这样的东西可以工作,但对于第一个就不行。
在第二个版本中你的对象是一个函数,所以你可以在任何需要函数的地方使用它Int => Int
。
扩展(Int => Int)
或Function1[Int, Int]
是一样的。
我有一个功能对象,例如:
object Doubler {
def apply(v: Int) = v*2
}
当我这样做时它有效Doubler(1)
我也可以用 lambda 类型扩展它:
object Doubler extends (Int=>Int) {...}
有区别吗?背后有什么原因吗?
不同之处在于,在您的第二个版本中 Doubler
实现了 Int => Int
,而在第一个版本中则没有。
所以对于第二个版本,像 val f: Int=>Int = Doubler
或 someList.map(Doubler)
这样的东西可以工作,但对于第一个就不行。
在第二个版本中你的对象是一个函数,所以你可以在任何需要函数的地方使用它Int => Int
。
扩展(Int => Int)
或Function1[Int, Int]
是一样的。