Scala中创建存储Tuple的数组报错,如何正确实现?
解决方法
错误原因很明确:Tuple2是带两个类型参数的泛型类,你必须指定它的具体类型参数(比如坐标的类型是整数、浮点数等),不能直接用Array[Tuple2]这种写法。
以下是几种可行的实现方式:
指定具体类型参数(推荐)
如果你的坐标是整数类型,直接明确声明:// 完整写法 var walls = Array[Tuple2[Int, Int]]() // Scala简化写法(更常用) var walls = Array[(Int, Int)]()后续可以正常添加元素:
walls += ((1, 2)) walls += (3, 4) // 甚至可以省略外层括号使用通配符(适用于暂时不确定类型的场景)
如果暂时不需要明确类型,可以用通配符占位:var walls = Array[Tuple2[_ , _]]() // 简化写法 var walls = Array[(_, _)]()但这种写法会丢失类型信息,后续操作可能需要类型转换,不推荐在业务代码中频繁使用。
让编译器自动推断类型
初始化时直接添加元素,Scala会自动推断数组和元组的类型:var walls = Array((1, 2), (3, 4)) // 此时walls的类型自动推断为 Array[(Int, Int)]
内容的提问来源于stack exchange,提问作者TamZ
相关产品推荐
相关产品推荐

