扩展 `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 = DoublersomeList.map(Doubler) 这样的东西可以工作,但对于第一个就不行。

在第二个版本中你的对象是一个函数,所以你可以在任何需要函数的地方使用它Int => Int

扩展(Int => Int)Function1[Int, Int]是一样的。