Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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
Kotlin 按值传递。大堆_Kotlin - Fatal编程技术网

Kotlin 按值传递。大堆

Kotlin 按值传递。大堆,kotlin,Kotlin,我有两个数组。但是当我改变的时候,第二个第一个也改变了。 我试过了 .clone() .copyOf() 但这对我不起作用 object MatrixObject { var table: Array<Array<Int>>? = null fun randOf(n: Int) { table= Array(n, { Array(n, { Random().nextInt(100 - 0) + 0 }) }) } var tableF: Array&l

我有两个数组。但是当我改变的时候,第二个第一个也改变了。 我试过了 .clone() .copyOf() 但这对我不起作用

object MatrixObject {
 var table: Array<Array<Int>>? = null

 fun randOf(n: Int) {
    table= Array(n, { Array(n, { Random().nextInt(100 - 0) + 0 }) })
 }

 var tableF: Array<Array<Int>>? = null
    get() {
        if (field==null)
          factorization()
        return field
    }

 fun factorization() {
        tableF = table!! 
        ...     //here I change elements of tableF
  }


}


但是它仍然不起作用。

我找到了解决方案。我初始化了数组

        tableF= Array(table!!.size, { Array(table!!.size, {0}) })
        for(row in 0 until table!!.size)
            tableF!![row] = table!![row].clone()
你能构造一个?可能的副本吗
 for(row in 0 until table!!.size)
   tableF!![row] = table!![row].clone() // and copyOf()
        tableF= Array(table!!.size, { Array(table!!.size, {0}) })
        for(row in 0 until table!!.size)
            tableF!![row] = table!![row].clone()