Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
scala中的泛型函数和多态参数类型有什么区别?_Scala - Fatal编程技术网

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
,那么肯定会有不同。但是在这种情况下,如果有任何显著差异,我不知道。