Канонический способ для пустого массива в Scala?


каков канонический способ получить пустой массив в Scala? new Array[String](0) слишком многословен.

4 53

4 ответа:

Array[String]()

вы можете оставить [String] часть, если она может быть выведена (например,methodThatAlwaysTakesAStringArray( Array() )).

val emptyArray =  Array.empty[Type]

Array() будет достаточно, в большинстве случаев. Это будет типа Array[Nothing].

если вы используете неявные преобразования, вам может потребоваться фактически написать Array[Nothing], из-за ошибка #3474:

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

Это не сработает:

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

Это:

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

но это только странный угол случае неявные преобразования. Вполне возможно,что в будущем эта проблема исчезнет.

Если тип массива является одним из примитивов, вы можете использовать ярлыки из scala.Матрица.

например для массива байтов это будет:

val arr = Array.emptyByteArray

Это полезно, когда тип не может быть выведен, и вы хотите оставаться менее многословен.