W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
類是表示可以有屬性,方法和事件的對(duì)象類型。 “它們被用來在應(yīng)用到模型的動(dòng)作,過程,以及任何概念實(shí)體”。
語(yǔ)法用于定義類類型如下
// 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是任何有效的標(biāo)識(shí)符。此公共的默認(rèn)訪問修飾符。
2、type-params描述了可選的通用類型參數(shù)。
3、parameter-list描述構(gòu)造函數(shù)參數(shù)。主構(gòu)造函數(shù)的默認(rèn)訪問修飾符是public。
4、identifier用于給可選的as關(guān)鍵詞指定名稱或自我標(biāo)識(shí)符,可以在類型定義中使用該名稱來引用類型的實(shí)例。
5、inherit關(guān)鍵字允許您為類指定基類。
6、let綁定允許您聲明該類的本地字段或函數(shù)值。
7、do-bindings部分包括在對(duì)象構(gòu)造時(shí)執(zhí)行的代碼。
8、member-list表由其他構(gòu)造函數(shù),實(shí)例和靜態(tài)方法聲明,接口聲明,抽象綁定以及屬性和事件聲明組成。
9、標(biāo)記定義的開始和結(jié)束的關(guān)鍵字class和end是可選的。
new (argument-list) = constructor-body
下面的例子說明了這一概念
下面的程序與計(jì)算線的長(zhǎng)度,而創(chuàng)建該類的對(duì)象的構(gòu)造沿創(chuàng)建一個(gè)類線
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)
當(dāng)你編譯和執(zhí)行程序,它產(chǎn)生以下輸出
Creating Line: {(1, 1), (4, 5)} Length: 5
在類定義中的let綁定允許您定義F#類的私有字段和私有函數(shù)。
type Greetings(name) as gr = let data = name do gr.PrintMessage() member this.PrintMessage() = printf "Hello %s " data let gtr = new Greetings("Zara")
當(dāng)你編譯和執(zhí)行程序,它產(chǎn)生以下輸出
Hello Zara
請(qǐng)注意使用自簽名類的Grails類。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: