我试图做一个println
替代品,以更易读的格式输出嵌套集合。这最好用一个例子来说明:我想List(Set(Vector(1.0,1.1), Vector(0d)), Set(Vector("a", "b", "c"), Vector("x", "y")))
可以打印,递归打印方法中的阵列
List
Set
Vector(1.0, 1.1)
Vector(0.0)
Set
Vector(a, b, c)
Vector(x, y)
这将是没有类型擦除方便很多,但我已经拿出
def rprint(a: Any, indent: Int = 0): Unit = a match {
case x: Traversable[_] =>
if (x.isEmpty)
rprint(x.toString, indent)
else x.head match {
case y: Traversable[_] => {
rprint(x.toString.takeWhile(_ != '('), indent)
x foreach {i => rprint(i, indent + 2)}
}
case y => rprint(x.toString, indent)
}
case x => println(" " * indent + x)
}
我m正在努力使其与数组很好地协作,而没有大量的代码重复。我希望他们能够像其他收藏一样工作。具体做法是:
数组不是
Traversable
可以转换使用
genericArrayOps
到ArrayOps这是TraversableOnce
阵列,但TraversableOnce
没有一个head
方法,所以我不能看到如何获取元素以检查它的类型toString
不起作用很喜欢其他收藏品(使用.deep
)
将数组并入该方法的最佳方法是什么?或者有什么不同的方法可以更好地工作?
这非常酷,它也处理迭代器,这太棒了! (我现在可能会去攻击我的scala-library.jar以将其包含在Predef中) –