【发布时间】:2016-01-05 02:00:47
【问题描述】:
我试图找出如何使用map 运算符创建一个具有与现有字段不同数量的字段的元组。
也就是说,如果我有一个 (String, Int1, Int2) 形式的元组,我想创建一个具有 (String, Int1 + Int2) 形式的 2 个字段的元组,其中第一个字段将与原始元组中的相同,第二个字段将是原始元组的第二个和第三个字段的加法。
【问题讨论】:
标签: scala dictionary tuples
我试图找出如何使用map 运算符创建一个具有与现有字段不同数量的字段的元组。
也就是说,如果我有一个 (String, Int1, Int2) 形式的元组,我想创建一个具有 (String, Int1 + Int2) 形式的 2 个字段的元组,其中第一个字段将与原始元组中的相同,第二个字段将是原始元组的第二个和第三个字段的加法。
【问题讨论】:
标签: scala dictionary tuples
对于(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 )
传达所需的语义。
【讨论】:
使用模式匹配:
tuple match { case (a, b, c) => (a, b + c) }
map 不是元组的成员。如果元组是集合中的元素类型,则可以使用它。
collection map { case (a, b, c) => (a, b + c) }
【讨论】: