F 入門 第二章 F 基礎 第八節 for迴圈

2022-09-16 02:03:13 字數 1897 閱讀 3981

本節對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的匿名函式。從...