用于嵌套数组的Scala递归打印功能

时间:2018-04-13 02:46:23

标签: arrays scala recursion types polymorphism

我正在尝试编写一个可以打印任意嵌套数组的辅助方法。我的计划是编写一个递归方法来处理这个问题。我想使用输入来区分要调用的方法。

基本情况是打印一个包含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 [_] ???)。我正在寻找一种通过类型表达我的要求的好方法,这可能吗?

1 个答案:

答案 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 => ...