Scala多维数组打印函数报错:printA参数为Any类型如何修复?
修复多维数组打印函数的类型错误
你的代码报错是因为当数组元素不是Int时,编译器只能推断元素类型为Any,而printA需要的参数是Array[_],类型不匹配导致错误。可以用模式匹配来判断元素类型,修正后的代码如下:
def printA(A: Array[_]): Unit = { A.foreach { // 匹配Int类型元素,直接打印 case int: Int => println(int) // 匹配数组类型元素,递归调用printA case arr: Array[_] => printA(arr) // 可选:处理既不是Int也不是数组的其他类型元素 case other => println(s"非预期类型元素: $other") } }
关键说明:
- 模式匹配能精准识别元素的实际类型,避免
isInstanceOf+asInstanceOf的繁琐写法,更符合Scala的函数式风格。 - 递归调用时,已经通过模式匹配确认
arr是Array[_]类型,编译器能正确识别参数类型,不会再报错。
内容的提问来源于stack exchange,提问作者Кирилл Нечаев
相关产品推荐
相关产品推荐

