2

我使用 immutable.Stack 的 'toArray' api,就像 Scala 中的以下代码一样,但它报告错误。

var stack1 = mutable.Stack[Long]()
val array = stack1.toArray();

它报告关于 toArray 的“无法解析具有此类签名的 toArray 引用”和关于 toArray() 的“()”的“未指定的值参数”!

一个图像

4

1 回答 1

2

TLDR

正确的方法是toArray不带括号的调用

解释

toArray函数具有以下签名(您可以tab在 Scala repl 中使用扩展签名):

scala> stack1.toArray
   def toArray[B >: Long](implicit evidence$1: scala.reflect.ClassTag[B]): Array[B]

它需要ClassTag隐式参数:

scala> stack1.toArray
res2: Array[Long] = Array()

scala> stack1.toArray(scala.reflect.classTag[Long])
res3: Array[Long] = Array()

在第一种情况下,参数被编译器替换。在第二种情况下,参数显式传递。

于 2016-03-15T09:02:20.443 回答