2015-04-20 21 views
21

Używam Array(0, {i -> ""}) obecnie, i chciałbym wiedzieć, czy istnieje lepszy realizacja takich jak Array()Jak utworzyć pustą tablicę w kotlinach?

Plus, jeśli używam arrayOfNulls<String>(0) as Array<String>, kompilator ostrzega mnie, że ta obsada nie może odnieść sukces. Ale jest to domyślna implementacja wewnątrz Array(0, {i -> ""}). Czy coś mi brakuje?

+0

http://stackoverflow.com/questions/33583235/how- can-i-tell-kotlin-that-an-arr ay-or-collection-can-contain-nulls - jeden z komentarzy sugeruje, że ostrzeżenie jest błędem –

Odpowiedz

27

jak późno (czerwiec 2015) istnieje funkcja biblioteki standardowe Kotlin

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

Tak, aby utworzyć pustą tablicę ciągów można pisać

val emptyStringArray = arrayOf<String>() 
+0

Co z tablicami typu "IntArray"? W tej chwili używam 'arrayOf () .toIntArray()', czy istnieje lepszy sposób? – csharpfolk

+1

jaki jest cel tych metod? ponieważ nie możemy przypisać rozmiaru, więc nie możemy przypisać wartości lub uzyskać. array [0] throw 'java.lang.ArrayIndexOutOfBoundsException:' wyjątek. – UnKnown

+0

co, jeśli typem jest 'T' zamiast' String'? – KeepMove

1

I znaleziono dwa sposoby, aby utworzyć pustą tablicę, drugi sposób bez lambda

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

chodzi zerowych łańcuchów KOTLIN, ten nie jest dozwolony. Musisz użyć ciągu ? wpisz, aby zezwolić na łańcuchy znaków o wartości null.

17

tylko dla odniesienia, istnieje także emptyArray. Na przykład,

var arr = emptyArray<String>() 

Patrz

+0

arr [0] throw 'java.lang.ArrayIndexOutOfBoundsException:' jak możemy go użyć? – UnKnown

+3

Jest to pusta tablica, nie można dodawać/czytać niczego do/z niej. Może wydawać się to bezużyteczne, ale czasami trzeba gdzieś przekazać tablicę, co pozwala łatwo zbudować pustą tablicę. –

+1

to jest lepsze niż odpowiedź Martian Odyssey, ponieważ gdy jest używane w klasie danych do inicjowania tablicy, arrayOf powoduje wyjątek java.util.concurrent.ExecutionException, podczas gdy emptyArray() nie. – iSWORD

2

zerowy Tablica

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

To jest tablica pustych, a nie pustych ciągów znaków. –

Powiązane problemy