Array(0, {i -> ""})
Obecnie używam i chciałbym wiedzieć, czy istnieje lepsza implementacja, taka jakArray()
plus, jeśli używam arrayOfNulls<String>(0) as Array<String>
, kompilator ostrzeże mnie, że to rzutowanie nigdy się nie powiedzie. Ale to domyślna implementacja w środku Array(0, {i -> ""})
. Czy coś mi brakuje?
Odpowiedzi:
Od końca (czerwiec 2015) dostępna jest standardowa funkcja biblioteki Kotlin
public fun <T> arrayOf(vararg t: T): Array<T>
Aby utworzyć pustą tablicę ciągów, możesz pisać
val emptyStringArray = arrayOf<String>()
źródło
IntArray
? Teraz używamarrayOf<Int>().toIntArray()
, czy jest lepszy sposób?java.lang.ArrayIndexOutOfBoundsException:
wyjątek.T
zamiastString
?Tylko w celach informacyjnych, jest też
emptyArray
. Na przykład,var arr = emptyArray<String>()
Widzieć
źródło
java.lang.ArrayIndexOutOfBoundsException:
jak możemy to wykorzystać?0
! Jest więc przydatny tylko do bardzo specjalnych celów, w których nie chcesz przechowywać żadnych danych (po prostu chcesz wpisać ). SłużyArray(length){""}
do dołączania żądanego plikulength
. Zobacz moją odpowiedź poniżej, aby uzyskać szczegółowe informacje.Pusty czy
null
? Oto jest pytanie!Aby utworzyć tablicę
null
s, po prostu użyjarrayOfNulls<Type>(length)
.Ale aby wygenerować pustą tablicę rozmiaru
length
, użyj:val arr = Array(length) { emptyObject }
Należy zauważyć, że należy odpowiednio zdefiniować
emptyObject
dla każdego typu danych (ponieważ nie chcesznull
s). E. g. dlaString
s,emptyObject
może być""
. Więc:val arr = Array(3) { "" } // is equivalent for: arrayOf("","","")
Tutaj jest na żywo przykładem . Zauważ, że program domyślnie działa z dwoma przykładowymi argumentami.
źródło
tablica null
var arrayString=Array<String?>(5){null} var nullArray= arrayOfNulls<String>(5)
źródło
Posługiwać się:
@JvmField val EMPTY_STRING_ARRAY = arrayOfNulls<String>(0)
Zwraca tablicę ciągów o rozmiarze 0, zainicjowaną wartościami null.
1. Źle:
@JvmField val EMPTY_STRING_ARRAY = emptyArray<String>()
Wraca
arrayOfNulls<String>(0)
2. Źle:
@JvmField val EMPTY_STRING_ARRAY = arrayOf<String>()
Zwraca tablicę zawierającą ciągi znaków.
źródło
Jak wspomniano powyżej, możesz użyć
IntArray(size)
lubFloatArray(size)
.źródło
Znalazłem dwa sposoby na utworzenie pustej tablicy, drugi sposób bez lambdy:
var arr = Array (0, { i -> "" }) var arr2 = array<String>()
Jeśli chodzi o puste ciągi Kotlin, jest to niedozwolone. Musisz użyć String? type, aby umożliwić ciągom zerową wartość.
źródło