2012-02-23 13 views
28

gdyby w Scala IDE spróbuj wykonać następujące czynności:Scala - tworząc tablicę typu sparametryzowanego określonej długości

val chars = Array[Char](256) 

to wszystko jest w porządku. Ale jeśli to zrobić:

val len = 256 
val chars = Array[Char](len) 

mówi, że spodziewa się Char zamiast len? Czemu? Spodziewam się, że zachowanie będzie takie samo! Dlaczego uważa, że ​​chcę umieścić tę rzecz w tablicy, zamiast określać jej rozmiar? O ile mi wiadomo, nie ma konstruktora dla tablic, który pobiera pojedynczy argument, aby umieścić go w tablicy.

Odpowiedz

51
val chars = Array[Char](256) 

ten działa, ponieważ 256 traktowane jako Char i tworzy tablicę jednego elementu (z numerem 256)

val len = 256 
val chars = Array[Char](len) 

tutaj len Int, więc nie

Aby utworzyć tablicę podanego rozmiaru potrzebujesz czegoś takiego

val chars = Array.fill(256){0} 

gdzie {0} jest funkcją produkować elementy

Jeśli zawartość tablicy nie ma znaczenia, można także użyć zamiast fillnew:

val chars = new Array[Char](256) 
+4

Jeśli zawartość tablicy nie ma znaczenia, możesz również użyć nowego zamiast wypełnienia: 'val chars = new Array [Char] (256)' – MxFr

24

Zastosowanie Array.ofDim[Char](256).

Ponadto, przed wysłaniem pytania do stackoverflow pomocne jest wyszukanie API docs.

Powiązane problemy