gpt4 book ai didi

scala - 满足条件时跳过循环中的 N 个元素

转载 作者:行者123 更新时间:2023-12-01 23:16:06 25 4
gpt4 key购买 nike

是否有一种简单的惯用方法,甚至可能是现有的方法来在 scala 中完成此操作:

执行循环/迭代器,根据条件检查序列中的每个元素。每当满足条件时,跳过接下来的N个元素,然后继续检查其余的直到再次满足条件,跳过N个元素,依此类推。

我想到的唯一方法是使用可变计数器或尾递归。有更好的解决方案吗?

最佳答案

我很惊讶没有人提到 unfold() (Scala 2.13.x)。

def select[A](input: List[A], test: A=>Boolean, skipN: Int): List[A] =
List.unfold(input){ lst =>
Option.when(lst.nonEmpty){
if (test(lst.head)) (lst.head, lst.tail.drop(skipN))
else (lst.head, lst.tail)
}
}

在这个版本中,每个被测试为“条件”的元素都是结果的元素,被跳过的元素(当然)不是。

关于scala - 满足条件时跳过循环中的 N 个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68818754/

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