📅  最后修改于: 2023-12-03 14:41:21.139000             🧑  作者: Mango
F#是一种函数式编程语言,它支持不可变性和静态类型。它提供了各种数据类型,这些数据类型可用于编写高效且严格类型安全的代码。
以下是F#中使用的基本数据类型:
| 类型 | 描述 |
| ------------ | ---------------------------------------------------- |
| bool
| 逻辑值(真或假) |
| byte
| 8位无符号整数 |
| sbyte
| 8位有符号整数 |
| int16
| 16位有符号整数 |
| uint16
| 16位无符号整数 |
| int32
| 32位有符号整数 |
| uint32
| 32位无符号整数 |
| int64
| 64位有符号整数 |
| uint64
| 64位无符号整数 |
| float32
| 32位浮点数 |
| float
| 64位浮点数 |
| char
| 16位Unicode字符 |
| string
| 字符串 |
| decimal
| 128位十进制数,用于精确计算(例如货币) |
| unit
| 值类型为()
的类型,表示无值 |
这些基本类型之间可以进行常见的操作,例如加、减、乘、除、比较等。
let x = 5
let y = 10
let z = x + y
printfn "%d" z // 输出15
列表list
是F#中最常见的数据类型之一。它是具有固定顺序的值的或引用的集合。列表中的元素可以是任何F#类型。
let lst = [1; 2; 3; 4; 5]
lst
是一个包含整数1到5的列表。要访问列表中的元素,可以使用索引运算符:
let first = lst.[0]
let last = lst.[lst.Length - 1]
元组是F#的另一种常见类型,它是一个有序的、将多个值一起组合的集合。元组中的值可以具有不同的类型。例如,以下是一个包含整数、浮点数和字符串的元组:
let tpl = (42, 3.14, "Hello")
要访问元组中的元素,可以使用点运算符:
let a = tpl.Item1
let b = tpl.Item2
let c = tpl.Item3
记录类型是一种自定义类型,用于存储多个相关字段或属性。F#的记录类型类似于C#或VB.NET中的类或结构体。
type Person = { Name: string; Age: int; Occupation: string }
Person
是一个记录类型,它具有三个字段:Name
、Age
和Occupation
。要创建一个Person
对象,可以使用以下语法:
let john = { Name = "John"; Age = 42; Occupation = "Engineer" }
要访问记录中的字段,可以使用点运算符:
printfn "%s" john.Name
printfn "%d" john.Age
printfn "%s" john.Occupation
结构类型是一种自定义类型,它类似于记录类型,但它具有值语义,而不是引用语义。与类不同,结构类型在堆上创建对象,而不是在栈上创建对象。
type Vector = struct
val x: float
val y: float
val z: float
new(x, y, z) = { x = x; y = y; z = z }
static member (+) (a: Vector, b: Vector) =
{ x = a.x + b.x; y = a.y + b.y; z = a.z + b.z }
Vector
是一个结构类型,它表示具有x、y和z值的向量。它有一个自定义的构造函数和一个重载的加法运算符。
let a = Vector(1.0, 2.0, 3.0)
let b = Vector(4.0, 5.0, 6.0)
let c = a + b
printfn "%f %f %f" c.x c.y c.z // 输出5.0 7.0 9.0
F#提供了许多数据类型,它们各有不同的用途。了解这些类型使您能够编写更好且更安全的F#代码。