gpt4 book ai didi

scala - 为什么List.dropWhile不起作用?

转载 作者:行者123 更新时间:2023-12-03 15:05:31 25 4
gpt4 key购买 nike

给定代码:

val test = List(1, 2, 3)
printList[Int](test.dropWhile((a: Int) => {a == 1}))

它将正确打印: 2 3在使用这样的代码时:
val test = List(1, 2, 3)
printList[Int](test.dropWhile((a: Int) => {a == 2}))

并且它将打印不正确: 1 2 3 a == 3也是如此
如何正确使用 dropWhile

好吧,我发现dropWhile返回“此列表的最长后缀,其第一个元素不满足谓词p。”
因此,如果我想检测某些满足谓词p的元素,则必须使用filterNot:)

最佳答案

那是因为dropWhile

drops longest prefix of elements that satisfy a predicate.



也就是说,只要不再满足条件,它就会停止下降。在您的第二个示例中,它从一开始就没有满足,因此不会丢失任何内容。

使用filter(选择满足谓词的所有元素)或filterNot(选择不满足谓词的所有元素)可能会更好:
val test = List(1, 2, 3)
printList[Int](test.filterNot((a: Int) => {a == 2}))

或者
val test = List(1, 2, 3)
printList[Int](test.filter((a: Int) => {a != 2}))

关于scala - 为什么List.dropWhile不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19352030/

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