Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Scala中更新2d数组元素的最优化方法_Scala - Fatal编程技术网

在Scala中更新2d数组元素的最优化方法

在Scala中更新2d数组元素的最优化方法,scala,Scala,这段代码用一些随机值更新2d数组的所有元素,有没有其他简单而简短的代码来解决这个问题 val terrainTypes = TerrainBlockType.values (0 until width).foreach(i => { (0 until height).foreach(j => { val r = Random.nextInt(terrainTypes.length) terrainMap(i)(j) = terrainType

这段代码用一些随机值更新2d数组的所有元素,有没有其他简单而简短的代码来解决这个问题

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)
    })
})

使用新的
数组创建短代码:

val terrainMap =
  Array.tabulate(width, height){ (_, _) =>
    terrainTypes(Random.nextInt(terrainTypes.length))
  }
如果需要
进行循环优化,请查看:

用于{

i如果要更新已存在的数组:

terrainMap.foreach(_.transform(_ =>
  terrainTypes(Random.nextInt(terrainTypes.length))
))

你是在寻找一种CPU效率更高的方法来做同样的事情,还是寻找一种能做同样事情的更短的代码?@BehrangSaeedzadeh两者都有,但越短越好Hanks,但我的terrainMap是一个值,我想更改每个项目,而不是整个项目map@Pooya:然后您必须在性能和简洁性之间做出选择。简洁性-,每我更喜欢使用不可变的数据结构,比如
Vector
terrainMap.foreach(_.transform(_ =>
  terrainTypes(Random.nextInt(terrainTypes.length))
))