我有一个有效的操作
securities |> Seq.map (fun x -> request.Append("securities",x))
让代码执行的最惯用的方法是什么?
我写了一个Seq.Doit,但它发痒
module Seq =
let Doit sa = sa |> Seq.toArray |> ignore
答案 0 :(得分:6)
我认为Seq.iter
在这种情况下是合适的。从MSDN参考页面:
Seq.iter : ('T -> unit) -> seq<'T> -> unit
将给定函数应用于集合的每个元素。
因此,假设request.Append
没有返回任何内容,则代码变为:
securities |> Seq.iter (fun x -> request.Append("securities", x))
答案 1 :(得分:2)
使用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