scala - 如何仅更改 Seq 的一个元素?
问题描述
我有一个不可变的序列。我需要从中创建一个新的 Seq,只更改一个元素,其索引已提供给我。我该怎么做 ?(我认为由于序列是不可变的,我需要使用一些函数并创建一个新的输出序列,但我不知道如何在“map”函数中检查索引以进行条件更新。)谢谢
解决方案
如果元素必须使用某些功能进行转换,f
那么
val idx = 2 // given index to transform
mySeq.iterator.zipWithIndex.map {
case (e, `idx`) => f(e)
case (e, _) => e
}.toSeq
如果只需要用另一个给定元素替换它,那么
mySeq.updated(idx, newElement)
如果集合会经常更新,那么请考虑Vector
,因为List
默认实现Seq
没有针对更新进行优化。
推荐阅读
- c# - 使用 'k_BackingField' 会导致版本兼容性问题吗?
- flutter - 构建函数返回 null。颤振应用
- javascript - Express/Mongoose 抛出新错误未通过
- elasticsearch - 聚合顺序路径无效
- git - 为什么 lstat 在 APFS (OSX) 上的性能比 Ext4 (Linux) 差
- python - 使用文本 blob 进行词形还原时如何传递多个标签
- java - 玩家(Snake)不连贯地移动,停止移动
- python-3.x - Tkinter - 如何防止用户窗口调整大小禁用自动调整大小?
- javascript - agent.add() 不工作,虽然 console.log() 是
- python - 熊猫系列返回错误的索引?