gpt4 book ai didi

f# - 如何使用 tryPick 获取序列的第一个元素?

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

我今天尝试使用 Seq.first,编译器表示它已被弃用,转而使用 Seq.tryPick。它表示它应用一个函数并返回第一个返回 Some 的结果。我想我可以说 fun x -> x!=0 因为我知道第一个在我的情况下会返回 Some,但是放在这里的正确约束是什么?正确的语法是什么?

为了澄清,我想以以下格式使用它:

let foo(x:seq<int>) =
x.filter(fun x -> x>0)
|> Seq.tryPick (??)

最佳答案

关键是“Seq.first”没有返回第一个元素,而是返回与某些“choose”谓词匹配的第一个元素:

let a = [1;2;3]
// two ways to select the first even number (old name, new name)
let r1 = a |> Seq.first (fun x -> if x%2=0 then Some(x) else None)
let r2 = a |> Seq.tryPick (fun x -> if x%2=0 then Some(x) else None)

如果您只想要第一个元素,请使用 Seq.head

let r3 = a |> Seq.head 

关于f# - 如何使用 tryPick 获取序列的第一个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1481957/

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