Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net F#-将100个对象创建到一个列表中-最实用、最惯用的方式_.net_F#_Functional Programming_Idioms - Fatal编程技术网

.net 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

在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() |]

因为您使用的是可变数据。

在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#has
List.replicate
Seq.take
Seq.iter
等等。F#还有一些很好的优点,比如
List.ofArray
不像Haskell中的
getElems
那样堆叠溢出。哦,好吧……从什么时候起,
DateTime
是可变的?是的,我只是试着否决我的答案。不记得是结构还是类。不管怎样,应该只使用浮点。使用不可变集合还是可变集合(如数组)实际上并不取决于元素类型的可变性。拥有一个不可变类型的数组是完全可以的不过,对于像
Map
这样的排序集合,必须小心。更改
地图的可变关键元素肯定是个坏主意。@Brent,你用“刚刚试图否决我的答案”把我搞坏了。顺便说一句,DateTime是一个结构/值类型。我不知道你说的浮动是什么意思。你只是创建了一个数组,而不是一个列表。不是吗?