F# - 结构( Structures)
优质
小牛编辑
130浏览
2023-12-01
F#中的结构是值类型数据类型。 它可以帮助您创建单个变量,保存各种数据类型的相关数据。 struct关键字用于创建结构。
语法 (Syntax)
定义结构的语法如下 -
[ attributes ]
type [accessibility-modifier] type-name =
struct
type-definition-elements
end
// or
[ attributes ]
[<StructAttribute>]
type [accessibility-modifier] type-name =
type-definition-elements
有两种语法。 主要使用第一种语法,因为如果使用struct和end关键字,则可以省略StructAttribute属性。
结构定义要素提供 -
- 成员声明和定义。
- 构造函数和可变和不可变字段。
- 成员和接口实现。
与类不同,结构不能被继承,也不能包含let或do bindings。 因为,结构没有让绑定; 您必须使用val关键字在结构中声明字段。
使用val关键字定义字段及其类型时,无法初始化字段值,而是将它们初始化为零或null。 因此,对于具有隐式构造函数的结构, val声明将使用DefaultValue属性进行注释。
例子 (Example)
以下程序与构造函数一起创建一个行结构。 程序使用结构计算线的长度 -
type Line = struct
val X1 : float
val Y1 : float
val X2 : float
val Y2 : float
new (x1, y1, x2, y2) =
{X1 = x1; Y1 = y1; X2 = x2; Y2 = y2;}
end
let calcLength(a : Line)=
let sqr a = a * a
sqrt(sqr(a.X1 - a.X2) + sqr(a.Y1 - a.Y2) )
let aLine = new Line(1.0, 1.0, 4.0, 5.0)
let length = calcLength aLine
printfn "Length of the Line: %g " length
编译并执行程序时,它会产生以下输出 -
Length of the Line: 5