F#–使用累加器映射列表

用户名

我是F#和一般函数编程的新手。给定一个场景,您要遍历一个序列或字符串列表,然后使用一个累加器将其映射到其他类型的新列表,那么正确的功能方法是什么?我可以使用可变变量在F#中实现此目标,但是我一直在努力寻找合适的函数来实现此目的。我认为它类似于地图,但是有状态的概念。

换句话说,我想将字符串列表转换为win形式单选按钮列表,但是对于每个新按钮,我想在前一个y坐标上加上20。就像是:

new RadioButton(Text=str,Location=new Point(20,y+20),Width=350)
背风处

您可以使用List.fold

open System.Drawing
open System.Windows.Forms

let getButtons () =
    let strings = ["a"; "b"; "c"]
    let (_, pointsRev) = List.fold (fun (offset, l) s -> (offset+20, (new RadioButton(Text=s, Location = new Point(20, offset), Width = 350))::l)) (0, []) strings
    pointsRev |> List.rev

状态是一对,其中包含当前偏移量和当前输出列表。输出列表的构建顺序相反,因此必须在最后将其反转。

您也可以使用Seq.map2:

let points = Seq.map2 (fun offset s -> new RadioButton(Text=s, Location = new Point(20, offset)) (Seq.initInfinite ((*)20)) strings |> List.ofSeq

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

f#折返:累加器是否需要与列表类型相同?

来自分类Dev

列表累加器在Erlang

来自分类Dev

使用Clojure中的累加器进行映射?

来自分类Dev

使用累加器的树的大小

来自分类Dev

使用累加器遍历Node.js异步目录

来自分类Dev

Prolog使用累加器在列表中查找元素

来自分类Dev

使用数组作为Scala foldLeft累加器

来自分类Dev

Data.Vector,使用累加器进行映射

来自分类Dev

球拍累加器列表功能

来自分类Dev

可重置的累加器行为?

来自分类Dev

pyspark矩阵累加器

来自分类Dev

在序言中与累加器反向-错误

来自分类Dev

在分机上使用累加器

来自分类Dev

使用数组reduce typescript将类型赋予累加器

来自分类Dev

Haskell使用累加器与Parsec进行解析

来自分类Dev

使用累加器连接数字列表

来自分类Dev

在F#中,如何正确使用ResizeArray()和Array.map中的累加器来更改记录的属性

来自分类Dev

如何使用OpenCL内核来做累加器?

来自分类Dev

列表累加器在Erlang

来自分类Dev

使用Clojure中的累加器进行映射?

来自分类Dev

使用累加器的树的大小

来自分类Dev

使用累加器遍历Node.js异步目录

来自分类Dev

Erlang导致累加器

来自分类Dev

如何使用HashMap折叠作为累加器?

来自分类Dev

在类的无序映射中使用滚动累加器

来自分类Dev

减少并映射到累加器上会产生堆栈溢出

来自分类Dev

Groovy/Scala - 使用累加器迭代时提前中止

来自分类Dev

在 xslt 3.0 中使用累加器无法正常工作

来自分类Dev

使用对象作为累加器的数组减少