我正在尝试编写一个可以打印任意嵌套数组的辅助方法。我的计划是编写一个递归方法来处理这个问题。我想使用输入来区分要调用的方法。
基本情况是打印一个包含Values的数组,即不是另一个嵌套数组。
递归情况是如果数组包含另一个数组,则在子数组上调用print。
这是我想写的代码
LAT<- Centroid[,29]
xlat<-as.list
for ( col in Centroid[,1:28]) {
xlat<- col * Centroid[,29]
cbind(TABTRUE,xlat, make.col.names= TRUE)
}
然而,编译器有一个艰难的决定哪个打印调度方法调用(我认为因为AnyVal == Array [_] ???)。我正在寻找一种通过类型表达我的要求的好方法,这可能吗?
答案 0 :(得分:2)
在我看来,你让它变得比它需要的更复杂。
从简单的事情开始......
def stringAll[X](x :X) :String = x match {
case arr: Array[_] => arr.map(stringAll).mkString("["," ","]")
case _ => x.toString
}
......有效......
val a = Array(Array(Array(2,5),Array('c','t')))
stringAll(a) //res0: String = [[[2 5] [c t]]]
...并根据需要添加更高级的转换case b:Boolean => ...
。