开发手册 欢迎您!
软件开发者资料库

F# - 结构

F#Structures - 从简单和简单的步骤学习fSharp编程,从基本到高级概念,包括概述,环境设置,程序结构,基本语法,数据类型,类型转换,变量,运算符,决策,循环,函数,字符串,选项,元组,记录,列表,序列,集合,映射,歧视联合,可变数据,数组,可变列表,可变字典,基本I / O,泛型,代表,枚举,模式匹配,异常处理,类,结构,运算符重载,继承,接口,事件,模块,命名空间。

F#中的结构是值类型数据类型.它可以帮助您创建单个变量,保存各种数据类型的相关数据. struct 关键字用于创建结构.

语法

定义结构的语法如下 :

[ attributes ]type [accessibility-modifier] type-name =   struct      type-definition-elements   end// or[ attributes ][]type [accessibility-modifier] type-name =   type-definition-elements

有两种语法.主要使用第一种语法,因为如果使用 struct end 关键字,则可以省略 StructAttribute 属性.

结构定义元素提供 :

  • 成员声明和定义.

  • 构造函数以及可变和不可变字段.

  • 成员和接口实现.

与类不同,结构不能是继承的,不能包含let或do绑定.因为,结构没有让绑定;您必须使用 val 关键字在结构中声明字段.

使用 val 关键字定义字段及其类型时,无法初始化字段值,而是将它们初始化为零或null.因此,对于具有隐式构造函数的结构, val 声明将使用 DefaultValue 属性进行注释.

示例

以下程序与构造函数一起创建一个行结构.程序使用结构计算行的长度 :

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;}endlet 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 aLineprintfn "Length of the Line: %g " length

编译并执行程序时,它会产生以下输出 :

Length of the Line: 5