作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道之前曾有人问过这个问题,但答案不适用于这种情况,或者我听不懂。
基本上,下面的(重新创建我的问题的简单示例)为什么不起作用?
class Test[+T] {
var list: List[T] = _
}
最佳答案
在T
中使测试成为协变量意味着对于任何Test[A]
,Test[Any]
是A
的子类型。因此,让我们创建一个Test
:
val test_string = new Test[String]
Test[String]
,并且所包含的
list
是
List[String]
类型。
Test[String]
是
Test[Any]
的子类型,因此应允许以下内容:
val test_any : Test[Any] = test_string
Test[Any]
,因此
test_any.list
的类型为
List[Any]
,这意味着以下内容应有效:
test_any.list = List[Any]()
List[Any]
,这是不允许的,因为它应该是
List[String]
,而不是
List[Any]
。这也意味着您可以在列表之前添加任何内容,因为它是
List[Any]
类型。
关于scala - 协变类型T发生在相反位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14584830/
COW 不是奶牛,是 Copy-On-Write 的缩写,这是一种是复制但也不完全是复制的技术。 一般来说复制就是创建出完全相同的两份,两份是独立的: 但是,有的时候复制这件事没多大必要
我是一名优秀的程序员,十分优秀!