Articles of многомерных массивов

Инициализация массива Kotlin 2d

Пожалуйста, взгляните на мою 2D-массив-инициализацию. Код работает. class World(val size_x: Int = 256, val size_y: Int = 256) { var worldTiles = Array(size_x, { Array(size_y, { WorldTile() }) }) fun generate() { for( x in 0..size_x-1 ) { for( y in 0..size_y-1 ) { worldTiles[x][y] = WorldTile() } } } } Проблема в том, что […]

Инициализация многопоточных массивов в Котлине

Скажем, у меня есть следующие функции, которые позволяют мне создавать матрицы: inline fun <reified T> Matrix2D(w: Int, h: Int, init: (Int, Int) -> T) = Array(w){ x -> Array(h){ y -> init(x, y) } } inline fun <reified T> Matrix2D(w: Int, h: Int, value: T) = Array(w){ Array(h){ value } } // For example: val […]

Сгладить массив в Котлине

У меня есть двумерный массив узлов, которые я хочу сгладить в единый массив всех узлов, используя функцию сглаживания массивов Kotlin. val nodes = kotlin.Array(width, { width -> kotlin.Array(height, { height -> Node(width, height) }) }) Затем я пытаюсь вызвать функцию flatten на 2D-массиве nodes.flatten() но я получаю сообщение об ошибке: Type mismatch: inferred type is […]

Сгладить итератор двумерного массива в Котлине

У меня есть класс Grid который является оболочкой над 2d массивом объектов Cell . Я хотел бы, чтобы этот класс реализовал интерфейс Iterable<Cell> , чтобы использовать его в циклах и перебирать непосредственно общие ячейки. Есть ли простой способ сделать это? Поддерживает ли Kotlin поддержку итераторов стиля yield return ? Мое текущее решение довольно многословное: override […]