Kotlin使用另一个数组初始化一个数组

时间:2019-04-01 11:03:28

标签: arrays indexing kotlin initialization

我可以像这样在Kotlin中初始化一个数组:

val mArr = Array<Int>(5) {0}

,我将得到以下数组[0,0,0,0,0]

问题是,我需要初始化一个数组并将另一个数组的值放入其中。 即:

initialArray = [1, 4, 5 ,-2, 7] val offset = 5

并且应该得到mArr = [6, 9, 10, 3, 12]

是否可以根据每个mArr[i]设置每个initialArray[i]的值?

类似

val mArr = Array<Int>(initialArray.size) { offset + initialArray[index]}

不将其包装在for loop

2 个答案:

答案 0 :(得分:2)

数组具有 <!DOCTYPE html> <html> <head> <title>Table fitting</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <table> <tr> <th class="t1"></th> <th class="t1">Cats</th> <th class="t1">Dogs</th> </tr> <tr> <td style="text-align:right",class="t1">Funny</td> <td class="t1">Catty</td> <td class="t1">Rocky</td> </tr> <tr> <td style="text-align:right",class="t1">Sad</td> <td class="t1">Kate</td> <td class="t1">Rex</td> </tr> </table> </body> </html>函数。

所以:

map

但是这样一来,您无需修改​​旧数组就可以创建新数组。 如果要修改旧数组,可以使用val initialArray = arrayOf(1, 4, 5 ,-2, 7) val offset = 5 val newArray = initialArray.map { it + offset }.toTypedArray() 扩展方法:

forEachIndexed

答案 1 :(得分:0)

val mArr = Array<Int>(initialArray.size) { offset + initialArray[index] }

已经可以使用了。只是这里没有定义index。您希望它是函数的参数,因此{ index -> offset + initialArray[index] }或更短的{ offset + initialArray[it] }。另外,为此,您可能需要IntArray instead of Array<Int>(也需要initialArray)。结合这些更改:

val mArr = IntArray(initialArray.size) { offset + initialArray[it] }