Канонический путь для пустого массива в Scala? - PullRequest
59 голосов
/ 22 июня 2010

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

Ответы [ 4 ]

76 голосов
/ 22 июня 2010
Array[String]()

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

63 голосов
/ 22 июня 2010
val emptyArray =  Array.empty[Type]
6 голосов
/ 22 июня 2010

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

. Если вы используете неявные преобразования, вам может понадобиться написать Array [Nothing] из-за Bug # 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.

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

0 голосов
/ 31 января 2018

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

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

val arr = Array.emptyByteArray

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...