【发布时间】:2018-01-31 16:42:24
【问题描述】:
在 Scala 中获取空数组的规范方法是什么? new Array[String](0) 太冗长了。
【问题讨论】:
标签: scala
在 Scala 中获取空数组的规范方法是什么? new Array[String](0) 太冗长了。
【问题讨论】:
标签: scala
Array[String]()
如果可以推断出[String] 部分,您可以省略它(例如methodThatAlwaysTakesAStringArray( Array() ))。
【讨论】:
Array.apply()。所以和new Array[String](0)不完全一样。
val emptyArray = Array.empty[Type]
【讨论】:
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.
但这只是隐含的一个奇怪的极端情况。以后这个问题很有可能会消失。
【讨论】:
如果数组类型是原语之一,您可以使用 scala.Array 中的快捷方式。
例如对于一个字节数组,它将是:
val arr = Array.emptyByteArray
当无法推断类型并且您希望保持不那么冗长时,这很有用。
【讨论】: