web-dev-qa-db-fra.com

Manière canonique pour tableau vide dans Scala?

Quel est le moyen canonique d'obtenir un tableau vide dans Scala? new Array[String](0) est trop prolixe.

55
Landon Kuhn
Array[String]()

Vous pouvez omettre la partie [String] si elle peut être déduite (par exemple, methodThatAlwaysTakesAStringArray( Array() )).

71
sepp2k
val emptyArray =  Array.empty[Type]
60
Eastsun

Array() suffira, la plupart du temps. Ce sera de type Array[Nothing].

Si vous utilisez des conversions implicites, vous devrez peut-être écrire Array [Nothing], en raison de Bug # 3474 :

def list[T](list: List[T]) = "foobar"
implicit def array2list[T](array: Array[T]) = array.toList

Cela ne fonctionnera pas: 

list(Array()) => error: polymorphic expression cannot be instantiated to expected type;
    found   : [T]Array[T]
    required: List[?]
        list(Array())
                  ^

Cette volonté:

list(Array[Nothing]()) //Nothing ... any other type should work as well.

Mais ce n’est qu’un cas bizarre d’implications. Il est fort possible que ce problème disparaisse dans le futur.

6
soc

Si le type de tableau est l'une des primitives, vous pouvez utiliser les raccourcis de scala.Array.

Par exemple, pour un tableau d'octets, ce serait:

val arr = Array.emptyByteArray

Ceci est utile lorsque le type ne peut pas être déduit et que vous souhaitez rester moins détaillé.

0
galbarm