【问题标题】:Idiomatic method to convert Array into ListBuffer将 Array 转换为 ListBuffer 的惯用方法
【发布时间】:2014-09-24 17:20:13
【问题描述】:

我正在寻找比这更清洁的解决方案:

import scala.collection.mutable.ListBuffer

val y = Array(1,2,3,4)
val z = new ListBuffer[Int]()
y.foreach(elem => z += elem)

【问题讨论】:

    标签: scala type-conversion idioms


    【解决方案1】:

    另一种方法是使用to转换方法:

    import scala.collection.mutable.ListBuffer
    
    val arr: Array[Int] = Array(1, 2, 3, 4)
    val buf: ListBuffer[Int] = arr.to[ListBuffer]
    

    变量上的类型注释当然是多余的,我添加它们只是为了清楚起见。

    to 非常通用,它允许在任意集合之间进行转换(即,从任何 Traversable 到在范围内具有适当 CanBuildFrom 实例的任何东西)。

    【讨论】:

      【解决方案2】:

      怎么样:

      val z = ListBuffer(y: _ *)
      

      ListBuffer.apply 接受可变参数样式的元素序列。签名是apply[A](elems: A *): ListBuffer[A] 为了将序列应用于这样的函数,我们使用语法: _ *

      【讨论】:

      • 酷,它有效。您能否添加一两句话来解释它是如何工作的,我不理解这种构造函数类型或您正在使用的 * 运算符
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-10
      • 2016-07-20
      • 1970-01-01
      • 2020-08-08
      • 2015-01-09
      • 2011-07-10
      • 2010-11-05
      相关资源
      最近更新 更多