【F#学习】数组:Array

Array

在F#中, 一个数组(Array)包含0个或多个元素,长度固定,但内容可以改变。元素需要具有相同的类型

你有两种方式在声明中明确标注一个数组的类型,如下:

// 声明一个数组。注意看清操作符是 [| 和 |]
let empty = [| |]
let emptyAlternative = Array.empty

let singleValue = [| 5 |]
let singleValueAlternative = Array.singleton 5

let threeValues = [| "a"; "b"; "c" |]

// 明确类型地声明数组
let arrayOne: int array = [| 1; 2; 3 |]
let arrayTwo: int[]     = [| 1; 2; 3 |]

通过下标(index)可以读取或者修改数组中的元素。下标从零开始计算。语法和C#类似。

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

// 修改元素5为9
numbers[2] <- 9

// 读取
numbers[2]
// => 9

通过在Array模块中定义的函数和运算符,可以对数组进行操作。当然,通过模式匹配(pattern matching)也可以。

let describe array =
    match array with
    | [| |] -> "Empty"
    | [| 1; 2; three |] -> sprintf "1, 2, %d" three
    | _ -> "Other"

describe [| |]         // => "Empty"
describe [| 1; 2; 4 |] // => "1, 2, 4"
describe [| 5; 7; 9 |] // => "Other"

在模式匹配中,使用丢弃运算符_表示你不关心这个位置对应的元素。

let describe array =
    match array with
    | [| |] -> "空"
    | [| x |] -> "单元素"
    | [| _; y |] -> "双元素"
    | _ -> "多元素"

describe [| |]          // => "空"
describe [| 1 |]        // => "单元素"
describe [| 5; 7 |]     // => "双元素"
describe [| 5; 7; 9 |]  // => "多元素"

单独使用_进行模式匹配的时候,务必把它放在最后,因为模式匹配是由上到下进行的。

posted @ 2025-09-19 21:41  QMazon  阅读(7)  评论(0)    收藏  举报