如何使用Scala在元组的ListBuffer中使用循环添加项? 我已将列表声明为:
val listV = new ListBuffer[(String,Int)]();
添加这样的项目:
listV += ("a",1)
给出错误:类型不匹配,如下所示
[error] found : String("a")
[error] required: (String, Int)
[error] listV += ("a",1)
[error] ^
[error] one error found
有任何解决此问题的建议吗?在期待中感谢
答案 0 :(得分:7)
+=
是ListBuffer
上的一种方法,因此scala编译器认为您正在尝试将两个参数传递给+=
方法。您需要一组额外的括号来强调元组是单个元素而不是无效的参数列表。
listV += (("a", 1))
答案 1 :(得分:1)
更多括号。 ("a",1)
被解释为向String
添加Int
和listV
。
scala> val listV = new ListBuffer[(String, Int)]
listV: scala.collection.mutable.ListBuffer[(String, Int)] = ListBuffer()
scala> listV += (("a", 1))
res0: listV.type = ListBuffer((a,1))
答案 2 :(得分:1)
您可以使用这种编译器可以与函数调用混淆的语法:
listV += "a" -> 1
如果你习惯于总是在元组周围使用大括号,那么这也将被正确解释
listV += ("a" -> 1)