Czy jest to najprostszy sposób zadeklarowania dwuwymiarowej tablicy Int
o określonym rozmiarze w Kotlin?Dwuwymiarowa tablica Int w Kotlin
val board = Array(n, { IntArray(n) })
Czy jest to najprostszy sposób zadeklarowania dwuwymiarowej tablicy Int
o określonym rozmiarze w Kotlin?Dwuwymiarowa tablica Int w Kotlin
val board = Array(n, { IntArray(n) })
Oto kod źródłowy dla nowych funkcji najwyższego poziomu do tworzenia tablic 2D. Kiedy Kotlin czegoś nie ma, przedłuż go. Następnie dodaj YouTrack issues dla rzeczy, które chcesz zasugerować i śledź status. Chociaż w tym przypadku nie są one znacznie krótsze niż powyżej, to przynajmniej zapewnia bardziej oczywiste nazewnictwo tego, co się dzieje.
public inline fun <reified INNER> array2d(sizeOuter: Int, sizeInner: Int, noinline innerInit: (Int)->INNER): Array<Array<INNER>>
= Array(sizeOuter) { Array<INNER>(sizeInner, innerInit) }
public fun array2dOfInt(sizeOuter: Int, sizeInner: Int): Array<IntArray>
= Array(sizeOuter) { IntArray(sizeInner) }
public fun array2dOfLong(sizeOuter: Int, sizeInner: Int): Array<LongArray>
= Array(sizeOuter) { LongArray(sizeInner) }
public fun array2dOfByte(sizeOuter: Int, sizeInner: Int): Array<ByteArray>
= Array(sizeOuter) { ByteArray(sizeInner) }
public fun array2dOfChar(sizeOuter: Int, sizeInner: Int): Array<CharArray>
= Array(sizeOuter) { CharArray(sizeInner) }
public fun array2dOfBoolean(sizeOuter: Int, sizeInner: Int): Array<BooleanArray>
= Array(sizeOuter) { BooleanArray(sizeInner) }
i użytkowania:
public fun foo() {
val someArray = array2d<String?>(100, 10) { null }
val intArray = array2dOfInt(100, 200)
}
Obecnie jest to najprostszy sposób, będziemy przedłużyć standardową bibliotekę z odpowiednimi funkcjami później
Tak, podany kod jest najprostszym sposobem, aby zadeklarować dwuwymiarową tablicę.
Poniżej podaję przykład inicjalizacji macierzy 2D, drukowanie &.
fun main(args : Array<String>) {
var num = 100
// Array Initialization
var twoDArray = Array(4, {IntArray(3)})
for(i in 0..twoDArray.size - 1) {
var rowArray = IntArray(3)
for(j in 0..rowArray.size - 1) {
rowArray[j] = num++
}
twoDArray[i] = rowArray
}
// Array Value Printing
for(row in twoDArray) {
for(j in row) {
print(j)
print(" ")
}
println("")
}
}
Czy możesz podać linki do dokumentacji? Mogę znaleźć wszelkie odniesienia i wtyczki Idea Kotlin nie rozwiązują go. –
Funkcje i ich kod źródłowy znajdują się w mojej odpowiedzi @ Micheled'Amico ... nie są częścią stdlib. –
Przepraszam, że byłem zbyt leniwy, gdy stuknę w twoją odpowiedź. .... Ale spróbowałem i wersja generyczna nie działa. Nawet szwy są poprawne i powinno zwrócić 'Array (Array)' w czasie wykonywania otrzymam 'java.lang.ClassCastException: [[Ljava.lang.Object; nie można rzutować na [[Something; 'exception]. Ponadto IMHO lepszym podpisem może być 'array2d (sizeOuter: Int, sizeInner: Int, init: (Int, Int) -> INNER)'. Zadaję pytanie, aby zrozumieć, co jest nie tak z twoją definicją funkcji. –