淺談Visual Studio 2010下F#代碼智能糾錯(cuò)
之前51CTO開發(fā)頻道報(bào)道過(guò)《Visual Studio 2010中F#十三項(xiàng)新特性詳解》,希望通過(guò)本文大家能更深入的了解F#。
先建立一個(gè)F#的項(xiàng)目,在編輯區(qū)鼠標(biāo)右鍵選擇打開F# Interact ive,我們可以在VS運(yùn)用fsi.exe的所有功能,也可以如同SQL一樣選擇語(yǔ)句執(zhí)行。
首先我們看到上面的提示#help,我們可以直接在 F# Interactive中輸入
就出現(xiàn)了如下圖:
前3個(gè)很明顯是控制DLL文件和FS文件的動(dòng)態(tài)加載,time是一個(gè)很有趣的東西,開啟之后在語(yǔ)句快運(yùn)行時(shí)都會(huì)有相關(guān)的性能指數(shù)
Real: 00:00:00.003, CPU: 00:00:00.000, GC gen0: 0, gen1: 0, gen2: 0
的顯示,很方便我們對(duì)程序的性能作出判斷。
好了,前面的簡(jiǎn)單介紹過(guò)后,我們開始正式編寫代碼了:
- > let int = 1
- let double = 1.0
- let float = 1.0f
- ;;
- val int : int = 1
- val double : float = 1.0
- val float : float32 = 1.0f
1-4行是輸入,6-8行是結(jié)果。我們發(fā)現(xiàn)作為C#關(guān)鍵字的int、double、float在F#中不再是關(guān)鍵字了。而通過(guò)結(jié)果我們可以看到,F(xiàn)#實(shí)際上也是一門強(qiáng)類型的語(yǔ)言,上面聲明的3個(gè)標(biāo)識(shí)符都有明確的類型。這種類型推導(dǎo)技術(shù)大家應(yīng)該并不陌生,C#3.0的關(guān)鍵字var也正是使用了這種技術(shù)。
了解了類型推導(dǎo)之后,我們接著來(lái)看F#的列表推導(dǎo):
- > let list = [1..10]
- let list0 = ['A' .. 'Z']
- let list1 = [0..3..30]
- let list2 = [9..-1..0]
- let list3 = [for x in 1 .. 10 -> x * x];;
- val list : int list = [1; 2; 3; 4; 5; 6; 7; 8; 9; 10]
- val list0 : char list = ['A'; 'B'; 'C'; 'D'; 'E'; 'F'; 'G'; 'H'; 'I'; 'J'; 'K'; 'L'; 'M'; 'N'; 'O';
- 'P'; 'Q'; 'R'; 'S'; 'T'; 'U'; 'V'; 'W'; 'X'; 'Y'; 'Z']
- val list1 : int list = [0; 3; 6; 9; 12; 15; 18; 21; 24; 27; 30]
- val list2 : int list = [9; 8; 7; 6; 5; 4; 3; 2; 1; 0]
- val list3 : int list = [1; 4; 9; 16; 25; 36; 49; 64; 81; 100]
如果你需要對(duì)集合元素篩選,突然發(fā)現(xiàn)
- let evens = [for x in 1 .. 10 when x % 2 = 0 -> x];;
提示語(yǔ)法錯(cuò)誤,這是因?yàn)樵赩S2010中F#對(duì)語(yǔ)法方便做了修訂,現(xiàn)在需要實(shí)現(xiàn)這樣的功能要采用下面的寫法
- let evens = [for x in 0..10 do if x % 2 = 0 then yield x];;
可以參考這里
(今天寫了3個(gè)小時(shí)才寫了這么點(diǎn),看來(lái)寫B(tài)log也是體力活呢。通過(guò)上面可以看到F#給我們的編程帶來(lái)了便捷的方式,我要再接再厲繼續(xù)寫下去。)
原文標(biāo)題:F#學(xué)習(xí)(二)
鏈接:http://www.cnblogs.com/Damon/archive/2010/05/11/1732743.html
【編輯推薦】