上一篇博客,介绍了列表类型,本篇将介绍数组类型Array、字典类型(Map),以及可变数组(ResizeArray)、Set类型。
一、数组类型 (Array)
数组类型,在语义上表示一组相同类型的集合。这个跟列表(List)相似,两者的区别在于列表类型数据元素不可变,而数组类型可以。虽然数组类型随机访问,在查询访问上性能优先列表,但列表在变更集合(增加、删除集合元素)上有更好的性能。这个跟大多数语言是相似的。
定义数组类型的语法,跟列表也很相似,区别在于数组多了两个"|"符合。
let arr=[|1;2;3|]let jaggedArr=[| [|1;2|]; [|3;4;5|] |]
arr为一维数组,类型为int array。jaggedArr数组为int array array
F#数组与c#很相似,有两种类别的数组,一种叫矩形(rectangle)数组,另一种叫锯齿(jagged)数组
矩形数组,在数字意义上,就是矩阵(matrix),一维数组也叫矢量或向量(vector)。注意锯齿数组内嵌的数组长度不相等。
在F#中共定义了三个模块来处理数组类型。Array,Array2,Array3,分别用来处理一维、二维、三维数组。
#light
let a=Array2.create 10 20 0
Array2.iteri (fun i j item-> printfn "no %d,%d :%A" i j item) a
System.Console.ReadKey(true) |>ignore
a类型为int [,],是一个二维数组。
let a=Array2.create 10 20 0a.[5,5]<-8Array2.iteri (fun i j item-> printfn "no %d,%d :%A" i j item) alet arr=[|1;3;4|]printfn "%A" arr.[0..2] let c=[| [|1;2|]; [|3;4;5|] |]printfn "%d" (c.[1].[2])
从上面的代码可以看出,F#除支持与c#类似的访问方法外,还对一维数组支持范围区间访问语法。
二、可变数组类型(ResizeArray)
ResizeArray类型,只是.net 类型 System.Collections.Generic.List泛型类型的别名。ResizeArray长度可变,数据元素可变,很显然这个类型难以保证线程安全,应优先使用F#的List类型。
let b=new ResizeArray<_>()
b.AddRange(seq{for i in 1..100 ->i})
b.[5]<-8
b.ForEach((fun i->printfn "%d" i))
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数组
, array
, 一维数据
, 类型
, c#锯齿数组
, 一维
, 二维
, 数组类型
, array类型
, 可变
, 随机数组列表
, array数组类型
数组Array类型
fa、fu、fifa online3、cf、f1,以便于您获取更多的相关知识。