在F#中遍历列表直到满足某些条件

时间:2020-07-16 21:30:25

标签: f#

让我们获取这些数据:

let a = [10; 11; 12; 13; 14; 0; 15; 16]

我正在尝试这样做:

[
    let mutable skip = false
    for i in 0 .. a.Length - 1 do
        if a.[i] = 0 then skip <- true
        if not skip then yield a.[i]
]

但是我想知道List.unfold是否可以用于此? (以及如何?)

在实践中,我正在从Excel文件中获取一个序列序列(行的序列,每个序列包含一列的列),并且我想在遇到空行时停止解析,但是简化的示例进行说明。

上面的表达式有效,所以这是关于我了解是否可以将展开方式应用到这一点。

2 个答案:

答案 0 :(得分:3)

我会使用takeWhile:

courses/course-listing/?tag=test

答案 1 :(得分:0)

是的,您可以使用List.unfold

let a = [10; 11; 12; 13; 14; 0; 15; 16]
a
|> List.unfold (function
    | [] -> None
    | x :: rest -> if x = 0 then None else Some (x, rest)
)
相关问题