本文介绍了为什么输入参数在方法中是相反的?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
以下是教程中的一些代码:
Here's some code from this tutorial:
case class ListNode[+T](h: T, t: ListNode[T]) {
def head: T = h
def tail: ListNode[T] = t
def prepend(elem: T): ListNode[T] =
ListNode(elem, this)
}
该教程说:
<$ c如何$ c> T 在 predend
和其他 T
引用中未处于协变位置( def头:T = h
和 def尾:ListNode [T] = t
),显然是协变的吗?
How is T
not in a covariant position in predend
, and the other T
references (def head: T = h
and def tail: ListNode[T] = t
), apparently, are covariant?
我要问的是为什么中的
不是协变的。 ,您的类应定义为: T
放在
So, referring to the source code of scala.collection.immutable.List.::, your class should be defined as this:
case class ListNode[+T](h: T, t: ListNode[T]) {
def head: T = h
def tail: ListNode[T] = t
def prepend[A >: T](elem: A): ListNode[A] = ListNode(elem, this)
}
参数类型 A
是一个新的类型参数的下界是 T
。
The argument type A
is a new type parameter which is lower bounded to T
.
这篇关于为什么输入参数在方法中是相反的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!