【问题标题】:Scala - Create a tuple from anotherScala - 从另一个创建一个元组
【发布时间】:2016-01-05 02:00:47
【问题描述】:

我试图找出如何使用map 运算符创建一个具有与现有字段不同数量的字段的元组。

也就是说,如果我有一个 (String, Int1, Int2) 形式的元组,我想创建一个具有 (String, Int1 + Int2) 形式的 2 个字段的元组,其中第一个字段将与原始元组中的相同,第二个字段将是原始元组的第二个和第三个字段的加法。

【问题讨论】:

    标签: scala dictionary tuples


    【解决方案1】:

    对于(String,Int,Int) 类型的单个元组,除了使用@Shyamendra Solanki 提到的模式匹配提取值之外,请注意方法_1、_2 和_3;因此

    def create(t : (String,Int,Int)) = (t._1, t._2+t._3)
    

    也是一种可行的方法,虽然可能不那么可读。

    对于给定的元组集合,还要考虑推导式

    def create(xs : Seq[(String,Int,Int)]) = for ((s,i1,i2) <- xs) yield (s, i1+i2 )
    

    传达所需的语义。

    【讨论】:

      【解决方案2】:

      我建议使用 Shyamendra Solanki 的回答,但为了完整起见,我想指出 Shapeless 为 tuples 提供 map 和 flatMap 方法

      【讨论】:

        【解决方案3】:

        使用模式匹配:

        tuple match { case (a, b, c) => (a, b + c) }
        

        map 不是元组的成员。如果元组是集合中的元素类型,则可以使用它。

        collection map { case (a, b, c)  => (a, b + c) }
        

        【讨论】:

          猜你喜欢
          • 2012-12-16
          • 2017-05-06
          • 2013-08-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多