我使用' toArray'不可变的api。像Scala中的代码一样堆栈,但报告错误。
var stack1 = mutable.Stack[Long]()
val array = stack1.toArray();
它报告'无法使用此类签名解析对阵列的引用'即将到来 和"未指定的值参数"关于'()' toArray()!
答案 0 :(得分:2)
正确的方法是在没有括号的情况下调用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()
在第一种情况下,参数由编译器代替。在显式传递的第二个case参数中。