class x(x:int){val y=x}
class z {
val grid= Array.ofDim(8,8)
}
該對象是否已經初始化? 當我嘗試在環路初始化像scala:初始化不可變對象數組
for(i<-0 until 8;j<-0 until 8) grid(i)(j)=new x(someValue)
我得到錯誤:空指針異常
class x(x:int){val y=x}
class z {
val grid= Array.ofDim(8,8)
}
該對象是否已經初始化? 當我嘗試在環路初始化像scala:初始化不可變對象數組
for(i<-0 until 8;j<-0 until 8) grid(i)(j)=new x(someValue)
我得到錯誤:空指針異常
使用Array.fill這樣val grid = Array.fill(8, 8) { new X(1) }
您可以使用Array.fill
:
Array.fill(8, 8)(myValue)
或者你可以使用toArray
嵌套for
理解:
{
for {
i <- 0 until 8
} yield { for {
j <- 0 until 8
} yield myValue
}.toArray }.toArray
同樣,你可以使用toArray
與map
:
(0 until 8).map { _ => (0 until 8).map { _ => myValue }.toArray }.toArray
您還可以使用這些方法的組合:
Array.fill(8){ { for(_ <- (0 until 8)) yield myValue }.toArray }
陣列被定義可變Scala中。它們基本上是用很多Scala的Cool Collection API增強的Java數組。
您所擁有的主要問題是數組缺失的類型參數化。通過指定的數組是[X]
類型的然後將以下代碼爲我工作很大:
class X(x:Int){val y=x}
class Z {
val grid= Array.ofDim[X](8,8)
for(i<-0 until 8;j<-0 until 8) grid(i)(j)=new X(2)
}
順便說一句,'類Foo(X:智力){VAL Y = X}'和'類Foo(VAL Y:詮釋)'基本上是相同的 –