Kotlin'de boş bir dizi nasıl oluşturulur?


93

Array(0, {i -> ""})Şu anda kullanıyorum ve daha iyi bir uygulama olup olmadığını bilmek istiyorum.Array()

artı, eğer kullanıyorsam arrayOfNulls<String>(0) as Array<String>, derleyici beni bu dökümün asla başarılı olamayacağı konusunda uyaracaktır. Ancak bu, içerideki varsayılan uygulama Array(0, {i -> ""}). Bir şey mi özledim?


stackoverflow.com/questions/33583235/… - yorumlardan biri uyarının bir hata olduğunu ileri sürüyor
Duncan McGregor

Yanıtlar:


128

Geç (Haziran 2015) itibariyle Kotlin standart kütüphane işlevi vardır

public fun <T> arrayOf(vararg t: T): Array<T>

Böylece boş bir Dizeler dizisi oluşturmak için yazabilirsiniz

val emptyStringArray = arrayOf<String>()

2
Tipik diziler nasıl IntArray? Şu anda kullanıyorum arrayOf<Int>().toIntArray(), daha iyi bir yol var mı?
csharpfolk

5
bu yöntemlerin amacı nedir? çünkü boyutu atayamayacağımız için değeri atayamayız veya alamayız. dizi [0] java.lang.ArrayIndexOutOfBoundsException:istisna atar .
Asif Mushtaq

ya tür Tyerine ise String?
Ari

1
@csharpfolk, boş bir IntArray başlatmak için intArrayOf () kullanabilirsiniz
Cremons

Kotlin'de string dizisine öğe nasıl eklenir?
Syed Hamza Hassan

42

Sadece referans için de var emptyArray. Örneğin,

var arr = emptyArray<String>()

Görmek


1
arr [0] java.lang.ArrayIndexOutOfBoundsException:nasıl kullanabiliriz?
Asif Mushtaq

8
Bu boş bir dizidir, ona hiçbir şey ekleyemez / okuyamazsınız. Yararsız görünebilir, ancak bazen bir diziyi bir yere iletmeniz gerekir ve bu, kolayca boş bir dizi oluşturmanıza olanak tanır.
Kuba Beránek

1
bu, Martian Odyssey'in cevabından daha iyidir çünkü bir veri sınıfında bir diziyi başlatmak için kullanıldığında, arrayOf java.util.concurrent.ExecutionException'a neden olurken emptyArray () bunu yapmaz.
iSWORD

1
Bunun değişmez bir uzunluğu var 0! Bu nedenle, herhangi bir veriyi saklamak istemediğiniz çok özel amaçlar için kullanışlıdır (sadece tür isteyin ). İstediğinizi Array(length){""}eklemek için kullanın length. Ayrıntılar için aşağıdaki cevabıma bakın.
Mir-Ismaili

14

Boş nullmu? Soru bu!

Bir dizi dizisi oluşturmak için null, basitçe kullanın arrayOfNulls<Type>(length).


Ancak boş bir boyut dizisi oluşturmak için şunu lengthkullanın:

val arr = Array(length) { emptyObject }

Not olmasıdır sen gerekir Bir tanımlamakemptyObject (İstemediğiniz beacause her veri tipi başına düzgün nulls). Örneğin. Strings için emptyObjectolabilir "". Yani:

val arr = Array(3) { "" }  // is equivalent for: arrayOf("","","")

İşte bir olduğunu canlı örneği . Programın varsayılan olarak iki örnek argümanla çalıştığını unutmayın.


9

boş dizi

var arrayString=Array<String?>(5){null}
var nullArray= arrayOfNulls<String>(5)

1
Bu, söz konusu boş dizeler değil, null dizisidir.
polkovnikov.ph

2

Kullanım:

@JvmField val EMPTY_STRING_ARRAY = arrayOfNulls<String>(0)

Null değerlerle başlatılmış 0 boyutlu bir Strings dizisi döndürür.

1. Yanlış:

@JvmField val EMPTY_STRING_ARRAY = emptyArray<String>()

Döner arrayOfNulls<String>(0)

2. Yanlış:

 @JvmField val EMPTY_STRING_ARRAY = arrayOf<String>()

Dizeleri içeren bir dizi döndürür.


2

Yukarıda belirtildiği gibi IntArray(size)veya kullanabilirsiniz FloatArray(size).


1

Lambda olmadan boş bir dizi oluşturmanın iki yolunu buldum:

var arr = Array (0, { i -> "" })
var arr2 = array<String>()

Kotlin'in boş dizeleriyle ilgili olarak buna izin verilmez. String kullanmak zorunda mısın? dizelerin boş olmasına izin vermek için yazın.

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.