F#数组是
固定大小,基于零的可变连续数据集合
相同类型的元素
因此,这意味着尽管您可以在位置n更改元素的值,但不能将数组扩展为包含更多元素。因此,您的mkOrder
函数正在做的是获取数组source
并通过向其添加新元素来创建新数组,除非您捕获mkOrder
返回的新数组,否则它将迷路了。如果您打开一个交互式窗口,然后尝试以下操作:
> let array1 = [| 1; 2; 3 |];;
val array1 : int [] = [|1; 2; 3|]
> let array2 = Array.append array1 [|4|];;
val array2 : int [] = [|1; 2; 3; 4|]
> array1;;
val it : int [] = [|1; 2; 3|]
> array2;;
val it : int [] = [|1; 2; 3; 4|]
该附录会创建一个新数组-它不会更新现有数组。
F#数组的MS文档为here
,
F#显然不是很惯用,但可以随时阐明您需要哪种数据结构以及如何使用它:
open System.Collections.Generic
let source = ResizeArray<string * string >( [("CocaCola","bigBottle"); ("CocaCola","smallCup"); ("Tuborg","smallCup")])
source.Add("Beer","XL")
source
val it:ResizeArray = seq
[(“” CocaCola“,” bigBottle“); (“可口可乐”,“小杯”);
(“ Tuborg”,“ smallCup”); (“啤酒”,“ XL”)]
ResizeArray
是C#的List
的别名,它是一个可变且可调整大小的数组。您可以使用IEnumerable
添加,删除并完成大多数所需的工作。
本文链接:https://www.f2er.com/3159230.html