scala中的泛型函数和多态参数类型有什么区别?
这两个函数声明之间有什么区别scala中的泛型函数和多态参数类型有什么区别?,scala,Scala,这两个函数声明之间有什么区别 def fn[T <: A](t: T): Unit = () def fn(a: A): Unit = () def fn[T这是Universal多态性的两个子类型:Parametric和Inclusion(继承/子类型)。它们有自己的优点和缺点,但是对于这种特殊情况不同,我可以想象,对于类型多态性,您将错过重载函数的可能性(什么是包含多态性的有价值部分) 例如: class A class B // extends A // - if it is n
def fn[T <: A](t: T): Unit = ()
def fn(a: A): Unit = ()
def fn[T这是Universal
多态性的两个子类型:Parametric
和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)
}
A类
类B//扩展了A//-如果需要的话
福班{
定义fn(t:A):单位=()
def fn(t:B):单位=()/-正常
}
类Boo{
def fn[T您是否缺少第二个函数的泛型[a]
。@Alec我认为a
是一个类型,而不是一个类型参数。@YuvalItzchakov.啊,完全正确。否则第一个也不起作用。:)首先,您想要实现什么?如果您分别返回T
和a
,而不是Unit
,那么肯定会有不同。但是在这种情况下,如果有任何显著差异,我不知道。