【问题标题】:Dynamic addition of item in List of tuples in ScalaScala中元组列表中项目的动态添加
【发布时间】:2014-12-15 18:38:48
【问题描述】:

如何使用 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

有什么建议可以解决这个问题吗?感谢期待

【问题讨论】:

  • 考虑将答案标记为正确,这样这个问题就不会一直悬而未决。

标签: list scala tuples


【解决方案1】:

+=ListBuffer 上的一个方法,因此 scala 编译器认为您正在尝试将两个参数传递给 += 方法。您需要一组额外的括号来强调元组是单个元素,而不是无效的参数列表。

listV += (("a", 1))

【讨论】:

    【解决方案2】:

    更多括号。 ("a",1) 被解释为将StringInt 添加到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))
    

    【讨论】:

      【解决方案3】:

      您可以使用编译器可以与函数调用混合的语法:

      listV += "a" -> 1
      

      如果您更习惯于在元组周围使用大括号,这也将被正确解释

      listV += ("a" -> 1)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-17
        • 2016-06-02
        • 1970-01-01
        相关资源
        最近更新 更多