【F#学习】记录 Record

记录,record, 是一些字段的集合。使用type关键字来定义一个record。记录的字段需要放置在花括号{}之内,需要明确地声明类型和名称。新建一个记录的实例的时候,必须给所有字段赋值。

定义一个记录的时候,字段必须换行声明,抑或使用分号;隔开。

// 定义一个记录
type Address =
    { Street: string
      HouseNumber: int }

// 创建一个记录的实例
let oldAddress: Address =
    { Street = "Main Street"
      HouseNumber = 17 }

// 或者用紧凑的格式书写
type ConciseAddress = { Street: string; HouseNumber: int }
let conciseAddress: ConciseAddress = { Street = "Main Street"; HouseNumber = 17 }

记录是不可变的。可以使用with关键字来拷贝一个记录,并让某些字段获得新的值。

// 拷贝记录,但是获得新的 HouseNumber
let newAddress: Address = { oldAddress with HouseNumber = 86 }
newAddress.Street      // => "Main Street"
newAddress.HouseNumber // => 86

当记录的每一个字段都相等的时候,称这两个记录相等。

可以使用模式匹配来获得记录的字段的值。

let myAddress: Address = { Street = "Broadway"; HouseNumber = 123 }
let { Street = myStreet; HouseNumber = myHouseNumber } = myAddress

match myAddress with
| { HouseNumber = 1 } -> printfn "First house"
| { HouseNumber = houseNumber; Street = street } -> printfn "House number %d on %s" houseNumber street
// => "House number 123 on Broadway
posted @ 2025-09-23 11:57  QMazon  阅读(4)  评论(0)    收藏  举报