Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/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
F# 如何在F中创建一个不断增长的集合#_F# - Fatal编程技术网

F# 如何在F中创建一个不断增长的集合#

F# 如何在F中创建一个不断增长的集合#,f#,F#,f#中是否有一个集合类型具有“append”方法,以便我可以将元素添加到该集合中: (伪代码) 结果:1,2,3,4,5 基本上,我需要一个可以在运行时增长的集合,我不能假设它的大小。 我找不到在f中使用列表或数组的方法# 更新:我不想每次都创建一个新的列表/数组,这种情况会发生很多次。我想附加已经存在的集合。我需要对集合使用相同的名称/符号。F#不允许我重新申报或重写集合,因此这不起作用: let A = [1,2,3] let A = A.append 4 or A <- Array

f#中是否有一个集合类型具有“append”方法,以便我可以将元素添加到该集合中:

(伪代码)

结果:1,2,3,4,5

基本上,我需要一个可以在运行时增长的集合,我不能假设它的大小。 我找不到在f中使用列表或数组的方法#

更新:我不想每次都创建一个新的列表/数组,这种情况会发生很多次。我想附加已经存在的集合。我需要对集合使用相同的名称/符号。F#不允许我重新申报或重写集合,因此这不起作用:

let A = [1,2,3]
let A = A.append 4  or A <- Array.appen A 4
设A=[1,2,3]

设A=A.append 4或A您可以使用
ResizeArray

let list = ResizeArray([1;2;3;4])
list.Add( 5 )

您可以使用调整数组大小的

let list = ResizeArray([1;2;3;4])
list.Add( 5 )

在我看来,您想要实现的目标与功能性方法没有多大关系。我会毫不犹豫地使用标准的.NET列表

关于您的更新:
由于列表是不可变的,所以并不是每次在列表中添加元素时都会创建一个新列表。这比复制整个现有列表要聪明得多。

在我看来,您想要实现的目标与功能性方法没有多大关系。我会毫不犹豫地使用标准的.NET列表

关于您的更新:
由于列表是不可变的,所以并不是每次在列表中添加元素时都会创建一个新列表。这比复制整个现有列表要聪明得多。

我不太明白您想做什么。你可以在f#中增加一个列表(但是,它总是会给你一个新列表)。你也可以附加到数组。我不太明白你想做什么。你可以在f#中增加一个列表(但是,它总是会给你一个新列表)。你也可以附加到数组。对不起,我刚学了F#,对.NET一无所知。使用标准的.NET列表是什么意思?你的意思是使用另一种语言,还是在f#about update中可以使用不同类型的列表:我想永久修改一个全局集合,使其具有新元素,以便我可以从不同的范围访问该新元素。实际上,我想为新元素动态分配新内存。好的,我现在明白了,ResizeArray是类型ListYes的别名,我也没有新建,ResizeArray是List的别名。你是对的,它与本地的f#list不同。该列表是.NET中最常用的标准集合。因为f#也在.net平台上工作,所以它也可以使用它。只是f#首先是功能性的,这就是为什么它有自己的列表更适合功能性方法。对不起,我刚学了f#,对.NET一无所知。使用标准的.NET列表是什么意思?你的意思是使用另一种语言,还是在f#about update中可以使用不同类型的列表:我想永久修改一个全局集合,使其具有新元素,以便我可以从不同的范围访问该新元素。实际上,我想为新元素动态分配新内存。好的,我现在明白了,ResizeArray是类型ListYes的别名,我也没有新建,ResizeArray是List的别名。你是对的,它与本地的f#list不同。该列表是.NET中最常用的标准集合。因为f#也在.net平台上工作,所以它也可以使用它。只是f#首先是函数式的,这就是为什么它有自己的列表更适合函数式方法。我尝试了让list=ResizeArray([1;2;3;4])list。添加(5)printfn“%A”list,我得到:seq[1;2;3;4;…],尽管我能够访问列表。[4]
ResizeArray
只是
System.Generic.Collections.List
的一个内置别名,并漂亮地打印前几个元素,不要不合理地使用
seq
前缀。如果您想从
ResizeArray
中获得更多信息,请利用
ICollection
IList
界面。第一种方法提供可数性和同步,另一种方法提供索引以及在任何位置添加或删除项的能力。例如:列表中的
let list=ResizeArray[1..4],增加5;list.Count
,返回5。我尝试让list=ResizeArray([1;2;3;4])list。添加(5)printfn“%A”list,我得到:seq[1;2;3;4;…],尽管我能够访问list。[4]
ResizeArray
只是
系统.Generic.Collections.list的内置别名,并漂亮地打印前几个元素,不要不合理地使用
seq
作为前缀。如果您想从
ResizeArray
中获得更多信息,请利用
ICollection
IList
界面。第一种方法提供可数性和同步,另一种方法提供索引以及在任何位置添加或删除项的能力。例如:列表中的
let list=ResizeArray[1..4],增加5;list.Count
,返回5。