如果可能,我正在寻找一种将 Any 视为 Array 或 Seq 并对其进行迭代的方法。
目前我有一些看起来像这样的代码,采用一系列 Any 并展平包含的任何 Traversable 或 Array 对象。
def flattenAsStrings(as: Seq[Any]): Seq[String] = {
val (travValued, other) = as.partition(a => classOf[Traversable[_]] isAssignableFrom(a.getClass))
val (arrayValued, singleValued) = other.partition(a => a.isInstanceOf[Array[_]])
val travStrings = travValued.map(_.asInstanceOf[Traversable[_]].map(_.toString)).flatMap(_.toList)
val arrayStrings = arrayValued.map(_.asInstanceOf[Array[_]].map(_.toString)).flatMap(_.toList)
singleValued.map(_.toString) ++ travStrings ++ arrayStrings
}
考虑到隐式转换等等,感觉在 Scala 中必须有一种更简单的方法来做到这一点。任何人?