Visual Studio 2010中F#十三項新特性詳解
原創【51CTO經典譯文】一、簡介
F#是一個基于.NET框架的多模式編程語言,Visual Studio 2010中對此語言提供了內置支持。F#支持函數式編程、面向對象編程和命令式編程。
以下各節描述的是在Visual F#的第一個正式版本中所提供的一些特征。
二、支持函數式編程
函數被視為值,可以直接傳遞給其他函數。借助于此功能,你可以方便地編寫高階函數(調用函數的函數)。這使得開發人員可以更容易編寫往往更不容易出錯的聲明性代碼。
F#支持組合式編程。你可以通過使用簡單的操作符語法來組合函數。您可以通過使用管道線操作符把函數調用組合起來,這樣可以使一個函數的輸出或返回值能夠傳遞到另一個函數作為輸入。您還可以通過使用組合操作符把函數組合起來的方式來定義一個新函數。
欲了解更多的信息,請參見“函數(F#)”。
三、Lambda表達式
Lambda表達式能使函數進行即時定義而不必加以命名。欲了解更多的信息,請參閱“Lambda表達式:fun關鍵字(F#)”。
四、有用的數據類型
F#提供了支持函數式編程風格的類型,如針對簡單數據集合的元組和針對結構化符號數據的discriminated unions。欲了解更多的信息,請參閱“元組(F#)”、“Discriminated Unions(F#)”和“Options (F#)”。
五、不可變的數據類型
F#提供了許多不可變的數據結構,如不可變的列表、映射、集合、序列和記錄等。欲了解更多的信息,請參見“列表(F#)”,“序列(F#)”和“記錄(F#)”。
六、模式匹配
模式匹配功能允許您把數據分解成各個組成部分,然后以分解的數據為基礎執行復雜的分支運算。模式匹配也可以擴展。欲了解更多的信息,請參閱“匹配表達式(F#)”,“模式(F#)”和“活動模式(F#)”。
七、異步并行編程
F#支持異步編程,并且提供了使這種編程比以往更容易的結構。欲了解更多的信息,請參閱“異步工作流(F#)”。F#也可以用來與.NET框架并行擴展一起使用。欲了解更多的信息,請參閱“.NET框架中的并行編程”。
八、交互式編程
Visual F#中還包括了一個F#解釋器,F#互動器(fsi.exe),它能夠以交互方式編譯并執行代碼。這使您能夠輕松地創建原型代碼,并嘗試在不需要編譯一個項目的情況下進行結構編碼。F#互動器也與Visual Studio IDE集成在一起。欲了解更多的信息,請參看“F#互動器(fsi.exe)參考”。
九、延遲計算
F#支持延遲計算,這可以使您直到需要結果時才進行計算。欲了解更多的信息,請參閱“延遲計算(F#)”。
十、支持面向對象編程
F#支持面向對象語言特征。除了讓您使用F#語言開發.NET框架API外,這種特征可以使F#程序能夠充分地訪問.NET框架。欲了解更多的信息,請參見“類(F#)”,“成員(F#)”和“繼承(F#)”。
十一、支持命令式編程
F#支持命令式編程結構,如可變的變量和數組,有副作用的函數和循環結構等。這特別適合于使用上述方式編程解決問題的場所。
十二、支持數學計算
F#支持數學計算。這包括對操作符重載的支持,使用泛型的操作符和一全套數學運算符,其中包括冪運算符。
F#還提供了對關聯了測量單位的浮點數據的專門支持,這可以支持對浮點公式進行單位檢查。
十三、先進的類型系統
F#的支持泛型編程。欲了解更多的信息,請參見“泛型(F#)”。
F#是靜態類型的語言,它支持類型推斷。這意味著,所有的程序元素在編譯時都有一個明確的類型,從而保證了類型安全,但你不必顯式地指定每個值的類型。因為F#編譯器能夠不斷地推斷一個程序元素的類型而不必顯式地提供類型。這樣一來,代碼更加緊湊,與此相關的編程中的類型不匹配錯誤大大減少。類型推斷還包括自動歸納,這意味著有可能是泛型的函數將被自動編譯為泛型。欲了解更多的信息,請參見“類型推斷(F#)”。
十四、有用的庫
F#包括了一組庫,為核心語言、集合類型、針對F#程序集的反射和格式化I/O等提供支持。F#還提供了對.NET框架4功能(如對.NET框架的并行擴展和Windows Presentation Foundation)的完全訪問支持。欲了解更多的信息,請參閱“.NET框架4”。
【編輯推薦】