Scala更新数组元素

use*_*307 13 arrays scala

我从没想过我会问这么简单的问题但是如何在scala中更新数组元素

我在我的Main对象中声明了内部函数,我有类似的东西

object Main
{
    def main(args: Array[String])
    {
        def miniFunc(num: Int)
        {
            val myArray = Array[Double](num)
            for(i <- /* something*/)
                myArray(i) = //something
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但我总是得到一个例外,有人可以解释我为什么以及如何解决这个问题?

dhg*_*dhg 15

你能填写遗漏的细节吗?例如,评论的内容是什么?有什么例外?(它总是最好问一个问题有一个完整的代码示例,并要清楚是什么问题.)

这是一个数组构造和更新的例子:

scala> val num: Int = 2
num: Int = 2

scala> val myArray = Array[Double](num)
myArray: Array[Double] = Array(2.0)

scala> myArray(0) = 4

scala> myArray
res6: Array[Double] = Array(4.0)
Run Code Online (Sandbox Code Playgroud)

也许您正在做出num代表阵列大小的假设?实际上,它只是数组中的(唯一)元素.也许你想要这样的东西:

    def miniFunc(num: Int) {
        val myArray = Array.fill(num)(0.0)
        for(i <- 0 until num)
            myArray(i) = i * 2
    }
Run Code Online (Sandbox Code Playgroud)

  • @user1224307 它仅表示使用 `new` 关键字时的大小。`Array(1, 2, 3)` 只是一个包含元素 1、2 和 3 的数组。 (2认同)
  • 值得指出的是,您可以使用Array.tabulate初始化数组,例如Array.tabulate(10)(identity)给出Array [Int](0,1,2,3,4,5,6,7,8,9) )和Array.tabulate(10)(_*2)给出Array [Int](0,2,4,6,8,10,12,14,16,18) (2认同)