4

このコードは、2次元配列のすべての要素をランダムな値で更新します。この問題を解決するための簡単で短いコードは他にありますか?

val terrainTypes = TerrainBlockType.values

(0 until width).foreach(i => {
    (0 until height).foreach(j => {
        val r = Random.nextInt(terrainTypes.length)
        terrainMap(i)(j) = terrainTypes(r)
    })
})
4

2 に答える 2

8

新規作成のショートコードArray:

val terrainMap =
  Array.tabulate(width, height){ (_, _) =>
    terrainTypes(Random.nextInt(terrainTypes.length))
  }

forループの最適化が必要な場合は、以下をご覧Scalaxyください。

for {
  i <- 0 until width optimized;
  j <- 0 until height optimized
} {
  val r = Random.nextInt(terrainTypes.length)
  terrainMap(i)(j) = terrainTypes(r)
}

Scalaxyfor-comprehensionswhile ループを使用して最適化します。

于 2013-08-04T12:23:24.000 に答える