在Scala中,如何使用' toArray()'把堆栈变成数组?

时间:2016-03-15 08:55:29

标签: scala stack toarray

我使用' toArray'不可变的api。像Scala中的代码一样堆栈,但报告错误。

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

它报告'无法使用此类签名解析对阵列的引用'即将到来  和"未指定的值参数"关于'()' toArray()!

An image

1 个答案:

答案 0 :(得分: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()

在第一种情况下,参数由编译器代替。在显式传递的第二个case参数中。