gpt4 book ai didi

scala - 从 Seq 中删除一个元素

转载 作者:行者123 更新时间:2023-12-02 20:30:46 32 4
gpt4 key购买 nike

在这段代码中,给定一个结构Seq[Seq[String]],我试图删除每个序列中的元素“B”。为此,我的目的是用 None 替换该字段,然后展平 Seq。问题是 flatten 语句无法编译,为什么会这样以及如何解决这个问题?

 object HelloScala extends App{

Seq(Seq("A","B","C"),Seq("A","B","C")).map{ rec =>
val rec2 = rec.zipWithIndex.map{ case (field, i) =>
if (field == "B")
None
else
field + i
}
println(rec2.flatten)
}
}

最佳答案

  1. 赋值的结果是Unit。不是您想要的 map() 内容。

  2. None 的补充是 Some(),您需要使用它来保持结果类型一致。

  3. map() 后跟 flatten 可以组合在 flatMap() 中。

-

Seq(Seq("A","B","C"),Seq("A","B","C")).map { rec =>
rec.zipWithIndex.flatMap { case (field, i) =>
if (field == "B")
None
else
Some(field + i)
}
}
//res0: Seq[Seq[String]] = List(List(A0, C2), List(A0, C2))

关于scala - 从 Seq 中删除一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48832527/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com