#arrays #kotlin
Вопрос:
Я хочу взять координаты и добавить их в массив, который я хочу вернуть из функции, но я не знаю, как добавить в kotlin в пустой массив с другим массивом
var temp:Array<Array<Int>> = arrayOf<Array<Int>>()
var i:Int = 0
while (true){
// if you see another of the same type then break
if(currentPlayer == 1){
if(ystart-i < 0){ // if you would go out of bounds on the next it and the current one does not have an opposite then breakwith temp as nothing
temp = arrayOf<Array<Int>>()
break
}else if(touchnum[ystart-i][xstart] == 1){
break
}else{
val slice: IntArray = intArrayOf(xstart, ystart-i)
temp.plusElement(slice)
}
}else{
}
Комментарии:
1. Используйте изменяемый список. Массив предназначен для случаев, когда вы хотите, чтобы количество элементов никогда не менялось.
Ответ №1:
Массивы имеют фиксированную длину в JVM. После создания вы не можете изменить их длину. Эквивалентная концепция для динамически растущих массивов называется списком.
В Котлине не очень идиоматично представлять кортежи (например, координаты) в виде массивов. Для 2D-координат уже существует тип, называемый Pair<A, B><A, B>. Но, честно говоря, самостоятельно написать доменный класс так дешево, что я рекомендую вам создать свой собственный, например:
data class Point2D(val x: Int, val y: Int)
А затем вы можете добавить экземпляры этого класса в свой список:
list.add(Point2D(xstart, ystart-i))