gpt4 book ai didi

f# - 如何在 F# 中测试序列是否为空?

转载 作者:行者123 更新时间:2023-12-04 03:09:52 26 4
gpt4 key购买 nike

考虑这个 F# 代码,它计算一个数字的一​​个因子:

let n = 340339004337I

// A sequence of all factors:
let factors = seq { 1I .. n / 2I} |> Seq.filter (fun x -> n % x = 0I)

// Pull off the first factor from the sequence:
let factor =
if factors = seq [] then
n
else
factors |> Seq.nth 0

换句话说,如果 factors为空,则返回 n .否则,从 factors 中取出第一个元素.目标是考虑 1 和 (n/2) 之间的所有因子,以及 n 本身,因为 1 和 n 始终是 n 的因子。
factors = seq []测试不起作用。我通过查看以下内容得出了这种语法:
> seq {1 .. 100} |> Seq.filter (fun x -> false) ;;
val it : seq<int> = seq []

但是,我不认为 seq []实际上是一个空序列:
> Seq.empty = seq [] ;;
val it : bool = false

如何测试序列是否为空?

最佳答案

试试 Seq.isEmpty .

if Seq.isEmpty yourSeqName then doSomething else doSomethingElse

顺便说一下,Seq.empty 创建了一个空的 Seq。它不测试一个。

关于f# - 如何在 F# 中测试序列是否为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4104025/

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