F#入门-第二章 F#基础-第十五节 记录
前面已介绍过了列表、元组或数组这些数据结构,除此之外,F#还有记录这种数据结构。记录表示几个值的并列排放,具有每一种数据类型前加上名称的这一特性。
虽然相当于C语言中的结构体,但是在F#中另外有方法单独描述C语言中的结构体,关于这个请在“面向对象“一节中详细解释。
基本的记录的写法如下所示
- 记录的定义
- type 类型名 = { 字段名1 : 类型名1; ... ; 字段名n : 类型名n }
- 记录的值的写入
- {字段名1 = 表达式1; ... ;字段名n =表达式n}
例如,以下为定义具有商品名和价格字段的juice记录。
记录类型的定义
type juice = {name : string;price : int};;
|
这个记录类型的数据定义如下所示。
记录类型的值
let my = {name = "Mellow Yellow";price = 110};;
let dp = {name = "Doctor Pepper";price = 120};;
|
另外,可以使用现有记录定义新的记录。
写法如下所示
- 利用现有记录生成新的记录
- { 现有记录 with 字段名1 = 表达式1; ... ; 字段名n =表达式n }
示例如下
利用现有记录生成记录
let ab = { my with name = "Ambasa" };;
|
使用记录类型的变量名.字段名从记录中读取值。
从记录中读取值
> my.name;; |
记录类型的值也是,基本上一旦定义好之后,就不能被改变了。但是加上mutable关键字之后,就可以改变值。这时,使用<-来改变值。
mutable记录类型
type human = {name:string;mutable age: int};;
|
这里我们定义了一个名字(name)不可变,年龄(age)可变的记录类型-人(human)。并用“人”来定义nobita并赋值。然后定义time_furosiki函数将年龄加上10岁并返回,然后调用time_furosiki函数修改nobita的年龄,最后显示nobita的年龄。

浙公网安备 33010602011771号