【问题标题】:In Scala, how to use 'toArray()' to turn a stack to a array?在 Scala 中,如何使用 'toArray()' 将堆栈转为数组?
【发布时间】:2016-03-15 08:55:28
【问题描述】:

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

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

它报告关于 toArray 的 'Cannot resolve reference toArray with such signature' 以及关于 toArray() 的 '()' 的“未指定值参数”!

An image

【问题讨论】:

    标签: scala stack toarray


    【解决方案1】:

    TLDR

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

    说明

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

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

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

    【讨论】:

    • TLDR是什么意思?
    • 它是 Too Long didn't Read 的缩写 - 基本上是对通常紧随其后的一长串文字的非常简短的解释 :)
    猜你喜欢
    • 2011-01-19
    • 2017-03-12
    • 2012-04-16
    • 1970-01-01
    • 2016-02-09
    • 2011-03-24
    • 2020-09-30
    • 2014-03-13
    • 2019-03-09
    相关资源
    最近更新 更多