原创 F#入門-第四章 面向對象-第五節 繼承

■ 應該使用繼承的場合    繼承是指以現有的類(父類)爲基礎,定義新類(子類)。子類繼承父類的所有功能,可以對父類的功能進行改寫,可以追加新的功能。繼承的功用是十分強大的,但是如果使用不得當的話,會使程序設計變得非常奇怪,所以首先讓我們

原创 F#入門-第四章 面向對象-第八節 對象表達式

    對象表達式是指繼承類而且直接創建對象的表達式。從表面上來看,很象匿名函數,但是該表達式直接創建子類的對象。     對象表達式的書寫方法如下所示。  對象表達式    對象表達式 :=    {        new 構造器的調用

原创 F#入門-第三章 功能性-第四節 詞法閉包

    lambda表達式可以創建詞法閉包。lambda表達式可以創建詞法閉包。詞法閉包是指,將創建lambda表達式時的環境保存起來,創建lambda表達式時所使用到的變量在之後(每次調用函數時)都可以被利用。    通過使用詞法閉包,

原创 F#入門-第二章 F#基礎-第十九節 模式匹配(一)

■ 模式匹配   模式匹配是F#中的一項非常重要的功能。該功能與C語言中的switch語句相類似。    正確的模式匹配表達式是比較複雜的,所以下面用模式匹配表達式的簡略寫法進行說明。關於模式匹配的部分說明放在下一節中另行介紹。  模式匹

原创 F#入門-第四章 面向對象-第七節 接口

■ 接口    接口只具有抽象方法和屬性。同時,接口不提供實現。也就是說,不能直接實例化接口,必須通過後文敘述的Object Expression,用類來實現接口。     接口的書寫方法如下所示。  接口         type 接口

原创 F#入門-第二章 F#基礎-第二十二節 模塊與命名空間

■ 模塊  模塊是指將定義進行統一彙總並賦予名稱的功能。由於只將有關聯的定義進行統一彙總,所以可以提高代碼塊的獨立性。雖然F#中的模塊體系是從Ocaml中轉變而來的,但是與Ocaml不同的是:    1.Functor等的一部分沒有被封裝

原创 F#入門-第四章 面向對象-第三節 成員函數

■ 成員函數  上一節我們學習了給類添加字段的方法,本節介紹如何讓類具有成員函數.如前所述,類所具有的函數叫做方法或成員函數。    將定義成員函數的書寫方法提取如下  成員函數的定義     類定義 :=     type 類名 [ 模

原创 F#入門-第四章 面向對象-第九節 索引器

    與方法同樣,屬性也可以接受參數。這種屬性叫做索引器。使用接下來我們要介紹的Item屬性,我們可以創建與訪問普通數組同樣方法進行訪問的類。    要利用索引器,需要在成員名後使用with。這時,引用值時定義get訪問器,設定值時定義

原创 F#入門-第四章 面向對象-第二節 類與構造器

■ 最小的類    類是數據與函數的集合,是面向對象編程的一種基本的數據結構。        類的定義如下例所示。  類的定義    type 類名 [ 模式 ] [ as 識別符 ] =         class           

原创 F#入門-第四章 面向對象-第一節 對象

■ 對象    F#的面向對象是與.NetFramework的面向對象有着緊密聯繫的。也就是說,F#具備了與C#等.NetFramework中的語言中面向對象所相同的面向對象機制。因此,F#中支持了OCaml中所不支持的重載(overlo

原创 F#入門-第三章 功能性-第二節 高階函數(map)

    高階函數是指將函數作爲參數或返回值的函數。熟練使用高階函數,可以使代碼變得非常簡潔。另外,爲了將函數提交給高階函數,需要額外書寫一些函數,但是因爲F#具有柯里化和匿名函數的特性,所以書寫起來也十分方便,所以儘量熟悉掌握高階函數比較

原创 F#入門-第二章 F#基礎-第二十節 模式匹配(二)

    除了在上一節介紹的基本的針對常量進行的模式匹配之外,F#中還存在着各種各樣的模式匹配。    這裏對其他模式匹配進行介紹。■ Discriminated Union模式    在OCaml中稱爲valiant,在c語言中相當於un

原创 F#入門-第四章 面向對象-第四節 封裝

    面向對象的優點之一爲封裝。封裝是指將對象內部的數據與行爲隱藏起來,只對外公開外部所需要用到的信息。    在本節中,介紹爲了進行封裝而使用到的功能之一訪問控制。    作爲示例,讓我們來看吃豆子游戲,該遊戲中小人在方格塊中進行遊走

原创 F#入門-第三章 功能性-第一節 柯里化

    我們在介紹通過let語句來定義函數時,介紹過可以定義帶有幾個參數的函數。但是,有趣的是,這只是看上去如此而已,實際上F#的函數永遠只接受一個參數,帶有幾個參數的函數是將幾個接受單一參數的函數進行組合後的結果。爲什麼可以這樣,是因爲

原创 F#入門-第三章 功能性-第三節 高階函數(fold)

    本節介紹高階函數fold。在英語中,fold單詞是指折起來,摺疊的意思,在F#中,所謂“摺疊”,是指對集合中的各元素進行統一運算,最後返回一個值的意思。    下面的介紹中,用列表舉例代替集合進行說明。例如,拿“列表求和”舉例,輸