这两个函数声明之间有什么区别?
def fn[T <: A](t: T): Unit = ()
def fn(a: A): Unit = ()
答案 0 :(得分:3)
这是Universal
多态性的两个子类型:Parametric
&amp; Inclusion
(继承/子类型)。他们有自己的专业人士和缺点,但对于这种特殊情况的区别,我可以想象,对于类型多态,你会错过重载函数的可能性(包含多态性的有价值部分)。
例如:
class A
class B // extends A // - if it is needed
class Foo {
def fn(t: A): Unit = ()
def fn(t: B): Unit = () // - is OK
}
class Boo {
def fn[T <: A](t: T): Unit = ()
def fn[T <: B](t: T): Unit = () // - is not OK (func names conflict)
}