我試圖做一個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中) –