Scala中空数组的规范方法?

Lan*_*uhn 61 scala

在Scala中获取空数组的规范方法是什么?new Array[String](0)太冗长了.

sep*_*p2k 79

Array[String]()
Run Code Online (Sandbox Code Playgroud)

[String]如果可以推断(例如methodThatAlwaysTakesAStringArray( Array() )),您可以省略该部分.

  • 这个版本似乎创建了一个空序列,并在该序列上调用`Array.apply()`.所以它与`new Array [String](0)`不完全相同. (2认同)

Eas*_*sun 65

val emptyArray =  Array.empty[Type]
Run Code Online (Sandbox Code Playgroud)


soc*_*soc 6

Array()大多数时候都足够了.它将是类型Array[Nothing].

如果使用隐式转换,由于Bug#3474,您可能需要实际编写Array [Nothing] :

def list[T](list: List[T]) = "foobar"
implicit def array2list[T](array: Array[T]) = array.toList
Run Code Online (Sandbox Code Playgroud)

这不起作用:

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

这将:

list(Array[Nothing]()) //Nothing ... any other type should work as well.
Run Code Online (Sandbox Code Playgroud)

但这只是隐含的一个奇怪的角落案例.这个问题很可能在将来消失.


gal*_*arm 6

如果数组类型是基元之一,则可以使用 scala.Array 中的快捷方式。

例如,对于字节数组,它将是:

val arr = Array.emptyByteArray
Run Code Online (Sandbox Code Playgroud)

当无法推断类型并且您希望保持不那么冗长时,这非常有用。