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