F# 为''|&燃气轮机;Seq.isEmpty |>;不是';
我只是想知道是否有更好的写作方式:F# 为''|&燃气轮机;Seq.isEmpty |>;不是';,f#,F#,我只是想知道是否有更好的写作方式: |> Seq.isEmpty |> not 比如: |> not Seq.isEmpty 也许你喜欢 |> (not << Seq.isEmpty) |>(不是我可能会同意你目前的观点。这取决于上下文-当这是某个更大功能的结果时,我认为以下几点看起来不错: let someFunction () = someData |> Some pipeline |> Seq.isEmpty |>
|> Seq.isEmpty |> not
比如:
|> not Seq.isEmpty
也许你喜欢
|> (not << Seq.isEmpty)
|>(不是我可能会同意你目前的观点。这取决于上下文-当这是某个更大功能的结果时,我认为以下几点看起来不错:
let someFunction () =
someData
|> Some pipeline
|> Seq.isEmpty
|> not
如果我是在其他上下文中编写的,我很可能会定义一个局部变量并编写如下内容:
let local =
someData
|> Some pipeline
if not (Seq.isEmpty local) then
printfn "Not empty!"
@Carsten的答案中的想法也很好,但我会有点担心,对于不熟悉这种编码模式的人来说,它可能看起来很奇怪。在我看来,理解那里发生的事情并不容易。我认为不是。相反,试着避免像Seq.isEmpty
,Seq.head
,Seq.skip
这样的函数>等等,当他们破坏懒散或可能导致重复枚举的序列。
Seq.isEmpty
的原型实现如下
let isEmpty (xs : _ seq)=
use en = xs.GetEnumerator()
not <| en.MoveNext()
设为空(xs:uq)=
使用en=xs.GetEnumerator()
不