我有一个侧面有效的操作
securities |> Seq.map (fun x -> request.Append("securities",x))
让代码执行最惯用的方式是什么?
我写了一个 Seq.Doit,但它很痒
module Seq =
let Doit sa = sa |> Seq.toArray |> ignore
我认为Seq.iter
在这种情况下是合适的。从 MSDN 参考页面:
Seq.iter : ('T -> unit) -> seq<'T> -> unit
将给定函数应用于集合的每个元素。
因此,假设request.Append
不返回任何内容,您的代码将变为:
securities |> Seq.iter (fun x -> request.Append("securities", x))
当您使用Seq.delay
或序列表达式 seq{} 创建序列时,将使用延迟序列。序列上的任何函数返回除seq
可以强制计算之外的任何数据类型。
或者,您可以使用for
循环而不是Seq.iter
:
for s in securities do
request.Append("securities", s)
如果你想隐藏副作用并返回request
以备后用,Seq.fold
是一个不错的选择:
securities |> Seq.fold (fun acc x -> acc.Append("securities", x); acc) request