scala - Scala中如何使用 'toArray()'将栈转为数组?

标签 scala stack toarray

我在 Scala 中使用了 immutable.Stack 的 'toArray' api,如下面的代码,但它报告错误。

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

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

An image

最佳答案

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()

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

关于scala - Scala中如何使用 'toArray()'将栈转为数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36006512/

相关文章:

c - 释放用 C 实现的堆栈

java - 从包含 Arraylist 的 ArrayList 生成数组

java - 为什么toArray在java中是这样实现的?

scala - object slick 不是包 scala 的成员

Scala 控制台无法工作,IntelliJ

arrays - 在 Julia 的列中组合和堆叠数组

c# - Lock vs. ToArray for thread safe foreach access of List collection

scala - 按名称调用函数体的隧道隐式参数

scala - 在 Scalaz 中结合 IO 和 State Monad

c++ - c++中可修改的char数组类型是什么?