更新元组列表

时间:2019-09-04 11:10:53

标签: scala lambda tuples pattern-matching

我是Scala的新手。我有一个元组列表。我希望能够将列表的最后一个元素更改为(x, y + 1),然后将所有其他元素映射到下一个元素。

val l1: List[(Int, Int)] = List((0,0), (0,1), (0,2), (0,3))

所以我需要列表l2,该列表在映射后应包含元素(0,1), (0,2), (0,3), (0,4)

任何帮助将不胜感激

3 个答案:

答案 0 :(得分:3)

模拟 Andronicust 答案我更喜欢这种风格:

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

因此您可以在对上进行模式匹配并为元素指定适当的名称。

l1.map{ case (x, y) => (x, y + 1) } 等相反。

答案 1 :(得分:2)

您可以这样映射列表:

l1.map(t => (t._1, t._2 + 1))

这会将列表中的每个元组映射为元组,第一个元素不变,第二个元素加一。

结果:

  

列表((0,1),(0,2),(0,3),(0,4))

答案 2 :(得分:2)

Scala 3 中的

Parameter Untupling可能会提供以下语法,而我们不再需要使用模式匹配或._1语法

l.map((x, y) => (x, y + 1))