本節對f#中的for迴圈進行介紹。
以下是f#中的基本的for迴圈的編寫方法。
for迴圈
for語句1 := for 迴圈變數 = 表示式1 to 表示式2 do 表示式3 done
for語句2 := for 迴圈變數 in 表示式4 do 表示式5 done
for語句1是c語言風格的迴圈方式。for語句2是一般所說的foreach迴圈。
for語句2在f#中稱作sequence迴圈。
for語句1是在表示式1中將迴圈變數進行初始化,迴圈執行表示式3,一直迴圈到迴圈變數與表示式2相等時停止迴圈。
c語言風格的for迴圈
for i=0 to 5 do print_endline (int32.to_string i) done;;
上述**為將0開始一直到5之間的6個數值進行標準輸出顯示。(標準輸出指輸出到預設裝置上,一般指控制台的顯示介面。)
在for語句2中,將表示式4中的元素乙個個繫結給迴圈變數,然後執行表示式5。
foreach風格的迴圈
for i in [1;2;3;4;5;] do print_endline (int32.to_string i) done;;for i in [|1;2;3;4;5;|] do print_endline (int32.to_string i) done;;
for i in ["abc";"def";"ghi";] do print_endline i done;;
for (a,b) in [("melon","fruit");("watermelon","vegetable")] do print_endline (a ^ " is " ^ b); done;;
上述**中,將列表或陣列中的元素,用foreach風格的迴圈進行迴圈輸出。
因為不在列表中或陣列的元素是訪問不到的,所以當迴圈訪問列表或陣列時,這種風格比c語言風格的迴圈更加具有優勢。
正如上述例子所示,物件只要有序列,就可以進行迴圈訪問。具體來說,只要是以下物件,就可以迴圈訪問。
列表或陣列
所有seq資料型別
所有支援getenumerator方法的資料型別
前幾個例子因為是列表,所以把用分號分隔開的所有元素都繫結給了變數i,然後逐個執行顯示語句.
最後乙個例子是針對二維列表進行的迴圈,所以進行了模式匹配功能.第乙個元素("melon","fruit")與(a,b)相比對,將"melon"匹配給a,"fruit"匹配給b,然後執行後面的輸出語句,二維列表中後面的其它元素都照此辦理。具體參照模式匹配一節。
使用這種foreach迴圈方式,可以對.net framework的集合(因為封裝了getenumerator方法)進行迭代(遍歷集合中每乙個元素)。
另外,for迴圈不僅可以用來進行迴圈訪問,還可以將迴圈的結果用列表進行儲存。
另外,下述例子中的->符號讀作yield。
foreach風格的迴圈2
> [1..3];;val it : int list = [1; 2; 3]
> [for i in [1..3] -> i*2];;
val it : int list = [2; 4; 6]
> [for i in [1..3] -> [for j in [2..4] -> (i,j)]];;
val it : (int * int) list list
= [[(1, 2); (1, 3); (1, 4)]; [(2, 2); (2, 3); (2, 4)];
[(3, 2); (3, 3); (3, 4)]]
f#是十分簡便的程式設計方法,所以可以用[a..b]的寫法代表連續數值的列表。
上述**為將[1..3]這個列表中的每個元素乘以2,然後按順序組合輸出[1..3]、[2..4]這樣的列表。
F 入門 第二章 F 基礎 第二節 注釋
f 語言有兩種注釋方法。行注釋為只有一行的注釋。塊注釋是從 到 之間的注釋。行注釋 行注釋。只注釋這1行 print endline hello world 塊注釋1 塊注釋。這裡也是注釋。print endline hello world print endline函式的使用方法在後文詳述。一般情...
F 入門 第二章 F 基礎 第十二節 列表
列表是資料的集合。f 的列表是線性列表的一種,單方向列表。單方向列表是基本的資料結構之一,一種攜帶指向下乙個元素的指標的資料結構。列表中的元素必須是相同資料型別。完全沒有元素的列表叫空列表,用來表示。另外,列表中的元素用 來分隔。列表 val it a list 1 val it int list ...
F 入門 第二章 F 基礎 第六節 匿名函式
關於用let語句定義函式的方法在前面一節已做了介紹,除此之外f 中還可以使用匿名函式。匿名函式定義如下所示。定義匿名函式 fun 引數1 引數2 函式體 fun關鍵字表示開始定義匿名函式。讓我們看乙個具體的示例。匿名函式示例 fun x x 1 val it int int 以上是加1的匿名函式。從...