我试图找出如何使用map
运算符创建一个元组,其中包含与现有字段不同的字段数。
即如果我有(String, Int1, Int2)
形式的元组,我想创建一个包含(String, Int1 + Int2)
形式的2个字段的元组,其中第一个字段与原始元组中的字段相同第二个字段将添加原始元组的第二个和第三个字段。
答案 0 :(得分:5)
使用模式匹配:
tuple match { case (a, b, c) => (a, b + c) }
map
不是元组的成员。如果元组是集合中元素的类型,则可以使用它。
collection map { case (a, b, c) => (a, b + c) }
答案 1 :(得分:1)
答案 2 :(得分: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 )
传达了所需的语义。