【问题标题】:Scala demultiplexing Array by multiple typesScala通过多种类型解复用数组
【发布时间】:2015-01-19 12:44:49
【问题描述】:

val a: Array[Any] = Array(1,"a",2,3.12,"c")

如何获得

val out = Array[Array[Any]] = Array(Array(1,2), Array(3.12), Array("a","c"))

【问题讨论】:

  • 我很好奇这个用例。您是如何最终需要Array[Any] 的?
  • 使用 language.dynamics

标签: scala dynamic types scala-collections


【解决方案1】:
val aInt = a.collect { case i: Int => i } 
val aDouble = a.collect { case d: Double => d }
val aString = a.collect { case s: String => s }

或更一般地

def filterByType[A: scala.reflect.ClassTag](a: Array[Any]) =
  a.collect { case x: A => x }

关于您的最后一次更新,您可以按运行时类分组并取出值:

a.groupBy(_.getClass).values.toArray

【讨论】:

  • @enzyme,预期的结果是什么?
  • 类型不是价值,那你要列出什么?类标签?
  • 非常感谢您的澄清。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多