让我们取这个数据:
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文件中获得了一系列序列(行的序列,每个行包含列的序列(,当我遇到空行时,我想停止解析,但简化的示例说明了这一点
上面的表达是有效的,所以这是关于我学习展开是否可以应用于此。
我会使用takeWhile:
let a = [10; 11; 12; 13; 14; 0; 15; 16]
Seq.takeWhile ((<>) 0) a
// |> do your parsing
是的,您可以使用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)
)