What is the canonical way to get an empty array in Scala? new Array[String](0)
is too verbose.
val emptyArray = Array.empty[Type]
Array[String]()
You can leave out the [String]
part if it can be inferred (e.g. methodThatAlwaysTakesAStringArray( Array() )
).
Array()
will be enough, most of the times. It will be of type Array[Nothing]
.
If you use implicit conversions, you might need to actually write Array[Nothing], due to Bug #3474:
def list[T](list: List[T]) = "foobar"
implicit def array2list[T](array: Array[T]) = array.toList
This will not work:
list(Array()) => error: polymorphic expression cannot be instantiated to expected type;
found : [T]Array[T]
required: List[?]
list(Array())
^
This will:
list(Array[Nothing]()) //Nothing ... any other type should work as well.
But this is only a weird corner case of implicits. It's is quite possible that this problem will disappear in the future.
If the array type is one of the primitives, you can use the shortcuts from scala.Array.
For example for a byte array it would be:
val arr = Array.emptyByteArray
This is useful when the type cannot be inferred and you want to remain less verbose.