这似乎应该很容易,但是我不能完全合并。我想获取一个字符串列表并创建一个新列表,该列表包含每个元素中的两个,形成第一个列表,但后缀不同。所以:
List("a", "b", "c") -> List("a_x", "a_y", "b_x", "b_y", "c_x", "c_y"
我试过了
val list2 = list1.map(i=> i+"_x", i+"_y")
但是斯卡拉说我有太多争论。这很接近:
val list2 = list1.map(i=> (i+"_x", i+"_y"))
但是它产生了List((“ a_x”,“ a_y”),(“ b_x,” b_y“),(” c_x“,” c_y“))这不是我想要的。我确定我缺少明显的东西。
最佳答案
您要flatMap
首先映射,然后将结果的结构展平到展平列表中。每个单独的结果本身必须是一个集合(而不是一个元组):
scala> List("a", "b", "c").flatMap(i => List(i + "-x", i + "-y"))
res0: List[String] = List(a-x, a-y, b-x, b-y, c-x, c-y)