📜  F#数组(1)

📅  最后修改于: 2023-12-03 14:41:21.406000             🧑  作者: Mango

F# 数组

在 F# 中,数组是最常见的数据类型之一。数组可以存储并访问多个元素,所有元素类型必须相同。

声明数组

下面是声明数组的基本语法:

let arrayName : dataType[] = Array.zeroCreate size

其中,arrayName 是数组的名称,dataType 是数组的元素类型,size 是数组的大小。

例如,可以声明一个包含 5 个整数的数组:

let numbers : int[] = Array.zeroCreate 5

还可以使用 {} 运算符指定数组元素的初值:

let numbers = [| 1; 2; 3; 4; 5 |]

这里,[||] 是 F# 中的符号,用于创建数组。

访问数组元素

F# 中的数组是零索引的,这意味着数组的第一个元素的索引为 0,第二个元素的索引为 1,以此类推。可以使用 [ ] 运算符访问数组元素。

例如,访问上面创建的数组的第一个和最后一个元素:

let first = numbers.[0]
let last = numbers.[numbers.Length - 1]
遍历数组

F# 支持多种方式遍历数组。

for 循环

使用 for 循环遍历数组:

for i = 0 to numbers.Length - 1 do
    printfn "Element %d: %d" i numbers.[i]
迭代器

使用迭代器遍历数组:

let iter = numbers.GetEnumerator()
while iter.MoveNext() do
    printfn "Element: %d" iter.Current
高阶函数

使用高阶函数遍历数组:

Array.iter (fun x -> printfn "Element: %d" x) numbers

这里 Array.iter 是一个高阶函数,它接受一个函数作为参数,该函数将应用于数组中的每个元素。

数组方法

F# 数组提供了许多有用的方法。以下是一些常用方法的示例:

Array.map

使用 Array.map 方法将数组映射到另一个数组:

let squares = Array.map (fun x -> x * x) numbers

这个函数将对数组中的每个元素应用一个函数,并返回一个新的数组。

Array.filter

使用 Array.filter 方法过滤数组:

let evens = Array.filter (fun x -> x % 2 = 0) numbers

这将返回一个仅包含偶数的新数组。

Array.fold

使用 Array.fold 方法将数组元素缩减为单个值:

let sum = Array.fold (fun acc x -> acc + x) 0 numbers

这个函数将对数组中的每个元素应用一个函数,该函数将计算数组的总和。

总结

上述是 F# 数组的基本知识点,F# 数组是功能丰富的数据类型,许多有用的函数和方法可以用于处理数组。