F#在线运行

版本:
运行结果
教程手册
代码仓库
极速运行
交互输入
极速运行模式,更高效的运行,点击编辑器上方的运行按钮即刻体验吧。
以下是用户最新保存的代码
函数式 赛车模拟 (自由格式) 发布于:2021-02-02 10:52 转换OCaml对象模式 发布于:2021-02-01 00:46 [更多]
显示目录



类是表示可以有属性,方法和事件的对象类型。 “它们被用来在应用到模型的动作,过程,以及任何概念实体”。

句法

语法用于定义类类型如下

// 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 ...
...

注意,

1、type-name是任何有效的标识符。此公共的默认访问修饰符。
2、type-params描述了可选的通用类型参数。
3、parameter-list描述构造函数参数。主构造函数的默认访问修饰符是public
4、identifier用于给可选的as关键词指定名称或自我标识符,可以在类型定义中使用该名称来引用类型的实例。
5、inherit关键字允许您为类指定基类。
6、let绑定允许您声明该类的本地字段或函数值。
7、do-bindings部分包括在对象构造时执行的代码。
8、member-list表由其他构造函数,实例和静态方法声明,接口声明,抽象绑定以及属性和事件声明组成。
9、标记定义的开始和结束的关键字class和end是可选的。

类的构造函数

构造函数是创建类类型实例的代码。
在F#中,构造函数的工作方式与其他.Net语言稍有不同。在类定义中,主构造函数的参数被描述为参数列表。
构造函数的主体由let和do绑定组成。
您可以通过使用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)}
Length: %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) )
end
let aLine = new Line(1.0, 1.0, 4.0, 5.0)

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

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

让绑定

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

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

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

Hello Zara

请注意使用自签名类的Grails类。

由JSRUN为你提供的F#在线运行、在线编译工具
        JSRUN提供的F#在线运行,F# 在线运行工具,基于linux操作系统环境提供线上编译和线上运行,具有运行快速,运行结果与常用开发、生产环境保持一致的特点。

title

使用此草稿 删除草稿

  • 00:23
注册登录后可减少验证码的弹出,点击前往 注册 | 登录

皮肤:

运行模式:

嵌入代码 iframe嵌入:


服务器已安装大部分常用的第依赖库,但仍可能存在一些未被安装的库, 可以通过本窗口立即安装所需依赖库。


请输入依赖库的名称:

请选择语言: