我对Scala完全不熟悉。在这里,我试图为变量分配一个空数组,它是成功的。但是当我试图将一个整数元素附加到变量时,发生了如下错误:
var c=Array()
c: Array[Nothing] = Array()
scala> c=Array(1)
<console>:8: error: type mismatch;
found : Int(1)
required: Nothing
c=Array(1)
^
这是什么原因?
答案 0 :(得分:11)
当您执行var c = Array()
时,Scala会将类型计算为Array[Nothing]
,因此您无法使用Array[Int]
重新分配该类型。你能做的是:
var c : Array[Any] = Array()
c = Array(1)
或
var c : Array[Int] = Array()
c = Array(1)
答案 1 :(得分:0)
Nothing
是Scala类型层次结构的底部类型。它是其他所有类型的子类型。参见documentation。
如果您不确定要添加哪种类型的值,请声明:
var c : Array[Any] = Array()
c = Array(1)
如果要确定数据类型,则声明为:
var c : Array[Int] = Array()
c = Array(1)