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

F# - 课程

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

类是表示可以具有属性,方法和事件的对象的类型. '它们用于对应用程序中的操作,进程和任何概念实体进行建模.

语法

定义类类型的语法如下 :

// Class definition:type [access-modifier] type-name [type-params] [access-modifier] ( parameter-list ) [ as identifier ] =   [ class ]      [ inherit base-type-name(base-constructor-args) ]      [ let-bindings ]      [ do-bindings ]      member-list      ...   [ end ]// Mutually recursive class definitions:type [access-modifier] type-name1 ...and [access-modifier] type-name2 ......


其中,

  • type-name 是任何有效的标识符.默认访问修饰符为 public .

  • type-params 描述了可选的泛型类型参数.

  • 参数列表描述了构造函数参数.主构造函数的默认访问修饰符为 public .

  • 标识符与可选一起使用as keyword为实例变量提供名称,或者 self-identifier,,可以在类型定义中使用它来引用该类型的实例.

  • inherit 关键字允许您指定类的基类.

  • let 绑定允许您声明类的本地字段或函数值.

  • do-bindings 部分包括在对象构造时要执行的代码.

  • member-list 包含其他构造函数,实例和静态方法声明,接口声明,抽象绑定以及属性和事件声明.

  • 关键字结束标记定义的开头和结尾是可选的.

类的构造函数

构造函数是创建类类型实例的代码.

在F#中,构造函数与其他.Net语言的工作方式差别不大.在类定义中,主构造函数的参数被描述为参数列表.

构造函数的主体由 let 组成绑定.

您可以使用new关键字添加其他构造函数来添加成员 :

 new (argument-list) = constructor-body


以下示例说明概念 :

示例

以下程序创建一个行类以及一个构造函数,该构造函数在创建类的对象时计算行的长度并减去;

type Line = class   val X1 : float   val Y1 : float   val X2 : float   val Y2 : float   new (x1, y1, x2, y2) as this =      { X1 = x1; Y1 = y1; X2 = x2; Y2 = y2;}      then         printfn " Creating Line: {(%g, %g), (%g, %g)}\nLength: %g"            this.X1 this.Y1 this.X2 this.Y2 this.Length   member x.Length =      let sqr x = x * x      sqrt(sqr(x.X1 - x.X2) + sqr(x.Y1 - x.Y2) )endlet aLine = new Line(1.0, 1.0, 4.0, 5.0)


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

Creating Line: {(1, 1), (4, 5)}Length: 5


让Bindings

let中的let绑定类定义允许您为F#类定义私有字段和私有函数.

type Greetings(name) as gr =   let data = name   do      gr.PrintMessage()   member this.PrintMessage() =      printf "Hello %s\n" datalet gtr = new Greetings("Zara")


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

Hello Zara


请注意 Greetings 类使用自我标识符 gr .