2015-10-07 34 views
1

我想了解如何使用map运算符,我可以创建一个具有与现有字段不同数量字段的元组。斯卡拉 - 从另一个创建一个元组

即,如果我在形式(String, Int1, Int2)一个元组我想的(String, Int1 + Int2),其中第一场将是相同的如原始元组和第二场将是形式创建具有2个字段的元组添加原始元组的第二个和第三个字段。使用

回答

5

模式匹配:

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

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

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

我建议使用Shyamendra索兰奇的答案,但是为了完整起见,我想指出的是,Shapelesstuples

1

地图和flatMap方法(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) 

传达想要表达的语义。