11

我对 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)
           ^

这是什么原因?

4

2 回答 2

12

当你这样做时var c = Array(),Scala 计算类型为Array[Nothing],因此你不能用Array[Int]. 你可以做的是:

var c : Array[Any] = Array()
c = Array(1)

或者

var c : Array[Int] = Array()
c =  Array(1)
于 2012-10-19T07:13:08.357 回答
0

Nothing是 Scala 类型层次结构的底层类型。它是所有其他类型的子类型。请参阅文档

如果您不决定要将哪种类型的值添加到空数组中,则声明:

var c : Array[Any] = Array()
c = Array(1)

如果您正在决定数据类型,那么您声明为:

var c : Array[Int] = Array()
c =  Array(1)
于 2020-09-20T09:30:43.460 回答