Java'da olduğu gibi Kotlin'de sadece boyut sağlayarak nasıl bir dizi oluşturabilirim?


Yanıtlar:


157

Referansa göre diziler şu şekilde oluşturulur:

  • Java'nın ilkel türleri için IntArray, kutulanmamış değerleri DoubleArraydepolayan farklı türler vb . Vardır .

    İlgili kurucular ve fabrika fonksiyonları ile oluşturulurlar:

    val arrayOfZeros = IntArray(size) //equivalent in Java: new int[size]
    val numbersFromOne = IntArray(size) { it + 1 }
    val myInts = intArrayOf(1, 1, 2, 3, 5, 8, 13, 21)
    

    İlki Java'dakine benzer, sadece varsayılan değerle doldurulmuş ilkel bir dizi oluşturur, örneğin sıfır for Int, falsefor Boolean.

  • İlkel olmayan diziler , öğe türü olan Array<T>sınıfla temsil edilir T.

    TJava'daki ilkel türlerden biri olmaya devam edebilir ( Int,, Boolean...), ancak içindeki değerler Java'nınkine eşit olarak kutu içine alınır Integer, Doublevb.

    Ayrıca, Ther ikisi de olabilir null ve boş olmayan gibi Stringve String?.

    Bunlar benzer şekilde oluşturulur:

    val nulls = arrayOfNulls<String>(size) //equivalent in Java: new String[size]
    val strings = Array(size) { "n = $it" } 
    val myStrings = arrayOf("foo", "bar", "baz")
    
    val boxedInts = arrayOfNulls<Int>(size) //equivalent in Java: new Integer[size]
    val boxedZeros = Array(size) { 0 }
    

19
Array<Int>(size)derlemez. Bunun nedeni, öğeleri sağlamadan boş değer atanamaz bir dizi oluşturamazsınız.
Kirill Rakhman

2
@KirillRakhman, yorumunuz için teşekkürler, bu yanlışlıkla yapılan bir hataydı. Sabit.
kısayol tuşu

0

Kotlin'de, N boyutunda bir IntArray oluşturmak basittir. IntArray(n)Kısayol tuşunun yanıtında ayrıntılı olarak açıklandığı gibi veya uygun türü kullanın .

Sabit boyutlu dizinizi kullanırken Kotlin Destructuring'i kullanabilirsiniz.

// Create fixed sized array
val point = IntArray(2)

// Access values directly
val (x, y) = point

Bu durumda xdizin 0'dan, ydizin 1'den vb. Alınacaktır.


0

İşte String of String init'in basit bir örneği

        var names = Array<String>(<AnotherArray.size>) { i -> "" }

Kotlin doc

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.