.net F#-将100个对象创建到一个列表中-最实用、最惯用的方式
在F#中,创建或“更新”100个新对象到列表中的最实用和最惯用的方法是什么.net F#-将100个对象创建到一个列表中-最实用、最惯用的方式,.net,f#,functional-programming,idioms,.net,F#,Functional Programming,Idioms,在F#中,创建或“更新”100个新对象到列表中的最实用和最惯用的方法是什么 例如,我想我们可以使用DateTime作为示例对象。或者,作为列表表达式: List.init 100 (fun x -> x * 2) [for i in 1..100 -> new System.DateTime()] 但是我认为这不太地道。 < P>我会考虑使用< /P> [|for i in 1..100 -> new System.DateTime() |] 因为您使用的是可变数据。在s
例如,我想我们可以使用DateTime作为示例对象。或者,作为列表表达式:
List.init 100 (fun x -> x * 2)
[for i in 1..100 -> new System.DateTime()]
但是我认为这不太地道。 < P>我会考虑使用< /P>
[|for i in 1..100 -> new System.DateTime() |]
因为您使用的是可变数据。在scheme中,我们刚刚做了(我对此很生疏):声明appendlist list xtogo append(如果(>x 0)(appendlist(cons list append)(-xtogo 1)append)(list))很好。谢谢List.init 100(fun x->new System.DateTime())可以说更为惯用(更短):
List.init 100(fun->DateTime())
@Ingo:F#中有类似的“序列”(Seq.initInfinite id)
是非负整数,例如。@Ingo:F#hasList.replicate
、Seq.take
、Seq.iter
等等。F#还有一些很好的优点,比如List.ofArray
不像Haskell中的getElems
那样堆叠溢出。哦,好吧……从什么时候起,DateTime
是可变的?是的,我只是试着否决我的答案。不记得是结构还是类。不管怎样,应该只使用浮点。使用不可变集合还是可变集合(如数组)实际上并不取决于元素类型的可变性。拥有一个不可变类型的数组是完全可以的不过,对于像Map
这样的排序集合,必须小心。更改地图的可变关键元素肯定是个坏主意。@Brent,你用“刚刚试图否决我的答案”把我搞坏了。顺便说一句,DateTime是一个结构/值类型。我不知道你说的浮动是什么意思。你只是创建了一个数组,而不是一个列表。不是吗?