我正在尝试理解Scala中的协方差,但我找不到任何帮助我解决这个问题的例子.我有这个代码:
class GenericCellImm[+T] (val x: T) {}
Run Code Online (Sandbox Code Playgroud)
它编译得很好,但是当我使用它时
class GenericCellMut[+T] (var x: T) { }
Run Code Online (Sandbox Code Playgroud)
它没有编译.为什么我在写这段代码时不能使用var(但我可以使用val)?我该如何解决?这里也是类似的情况
abstract class Sequence[+A] {
def append(x: Sequence[A]): Sequence[A]}
Run Code Online (Sandbox Code Playgroud)
问题是什么?
谁能告诉我,它为什么有效?
int[] ints = {1,2,3};
for(int i : ints) {
System.out.println(i); i = 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么我可以将0设置为i,但它仍然会迭代?