2010-06-22 16 views

Respuesta

61
Array[String]() 

Usted puede dejar de lado la parte [String] si se puede inferir (por ejemplo methodThatAlwaysTakesAStringArray(Array())).

+2

Esta versión parece crear una secuencia vacía y llamar 'Array.apply()' en esa secuencia. Por lo tanto, no es exactamente lo mismo que 'new Array [String] (0)'. –

+0

¿Podría explicar por qué esto es preferible a 'Array.empty [String]'? Encuentro la respuesta a continuación superior, ya que es menos ambigua cuando se lee. – Shuklaswag

6

Array() será suficiente, la mayoría de las veces. Será del tipo Array[Nothing].

Si utiliza conversiones implícitas, puede que tenga que escribir realmente Matriz [Nada], debido a Bug #3474:

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

Esto no funcionará:

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

Esto hará lo siguiente:

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

Pero esta es solo una extraña caja de esquina de implicits. Es muy posible que este problema desaparezca en el futuro.

52
val emptyArray = Array.empty[Type] 
+0

Esto también me funcionó cuando se podía inferir el tipo: Array.empty –

0

Si el tipo de matriz es una de las primitivas, puede usar los accesos directos de scala.Array.

Por ejemplo, para una matriz de bytes que sería:

val arr = Array.emptyByteArray 

Esto es útil cuando el tipo no se puede deducir y que desea permanecer menos detallado.

Cuestiones relacionadas