Kotlin'de belirtilen boyutta iki boyutlu Int
dizisini bildirmenin en kolay yolu bu mu?Kotlin'de iki boyutlu Int dizisi
val board = Array(n, { IntArray(n) })
Kotlin'de belirtilen boyutta iki boyutlu Int
dizisini bildirmenin en kolay yolu bu mu?Kotlin'de iki boyutlu Int dizisi
val board = Array(n, { IntArray(n) })
2D diziler oluşturmak için yeni üst düzey fonksiyonları için kaynak kodu olan uygun işlevleriyle standart kütüphane uzatacaktır. Kotlin bir şey eksikken uzatın. Sonra önermek ve durumu izlemek istediğiniz şeyler için YouTrack issues'u ekleyin. Bu durumda, yukarıdakilerden çok daha kısa olmalarına rağmen, en azından neler olup bittiğine dair daha belirgin bir isimlendirme sağlar.
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) }
Ve kullanımı:
public fun foo() {
val someArray = array2d<String?>(100, 10) { null }
val intArray = array2dOfInt(100, 200)
}
Evet, verilen kod iki boyutlu diziyi bildirmek için en kolay yoludur.
Aşağıda, size 2B dizi başlatma & yazdırma örneği vereceğim.
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("")
}
}
Bazı belgelerin bağlantılarını verebilir misiniz? Dikişlerde herhangi bir referans ve Fikir kotlin fişi bulabilirim. –
Fonksiyonlar ve kaynak kodları benim Micheled'Amico cevabımda… stdlib'in bir parçası değiller. –
Maalesef cevabını özlediğimde çok tembel davrandım. .... Ama denedim ve genel sürümü çalışmıyor. Hatta doğru şekilde dikiş yapar ve 'java.lang.ClassCastException 'ı aldığım çalışma zamanında bir Array (Array)' i döndürmesi gerekir. [[Ljava.lang.Object; [[Bir şey; 'istisna. Ayrıca IMHO daha iyi bir imza olabilir 'array2d (sizeOuter: Int, sizeInner: Int, init: (Int, Int) -> INNER)'. İşlev tanımınızda neyin yanlış olduğunu anlamak için bir soru soracağım. –