F 入門 六 F 中的 for while迴圈

2022-07-04 21:48:09 字數 2175 閱讀 4430

首先我們來看看

f#中基本的

for迴圈編寫方法。

for迴圈

for語句

1 := for

迴圈變數

=表示式

1 to

表示式2 do

表示式3 done

for語句

2 := for

迴圈變數

in表示式

4 do

表示式5done

for語句1有點

c語言的風格。

for語句

2就是一般所說的

foreach

迴圈,類似於

c#,不過功能更強大。

下面我們來看看第一種

for迴圈:

> // for loop

for i = 1 to 5 do

printfn "%d" i;;12

345val it :unit = ()

這裡在表示式中將迴圈變數進行初始化,從

1迴圈到

5,然後輸出每個整數。

用downto

關鍵字來表示反向遞減的迴圈:

>// counting down

for i = 5 downto 1 do

printfn "%d" i;;

第一種for

迴圈只支援整數,如果迴圈超過

system.int32.maxvalue

次時,你需要用可列舉

(enumerable)的

for迴圈

,即第二種

for迴圈:

> // enumerable loop

for i in [1 .. 5] do

printfn "%d" i;;12

345val it :unit = ()

這跟c#

中foreach

迴圈類似,但它可以

支援模式匹配

,這讓它比

c#更強大。如下面的例子,

famouspets

中有貓和狗,這裡用到了

f#中的

可區分聯合

:> // pet type

type pet=

| cat of string * int // name, lives

| dog of string// name

;;type pet=

| cat of string * int

| dog of string

> letfamouspets = [ dog("lassie"); cat("felix", 9);dog("rin tin tin") ];;

valfamouspets : pet list = [dog "lassie"; cat ("felix",9); dog"rin tin tin"]

> //print famous dogs

for dog(name) in famouspets do

printfn "%s was a famous dog." name;;

lassiewas a famous dog.

rin tintin was a famous dog.

val it :unit = ()

對於第二種

for迴圈,只要物件有序列,就可以進行訪問,具體來說:

這裡值得注意的是,在f#

的for

迴圈中沒有

break

或者continue

關鍵字,如果真需要,你可以新增乙個變數,把

for迴圈轉換成

while

迴圈。下面我們簡單介紹下

while

迴圈。while

迴圈while

語句:=while

表示式1 do

表示式2done

> // while loop

letmutable i = 0

while i < 5 do

i <- i + 1

printfn "i = %d" i;;

i = 1

i = 2

i = 3

i = 4

i = 5

valmutable i : int = 5

while

迴圈不能被用在存粹的函式式型別,因為你不可以改變判定而迴圈永遠也不會終止。

F 入門學習(一)

開啟專案 6 3 6.0 3.0 6 3.0 會有波浪線,預能感知,藍色警告可以執行 字元型let x1 財 val x1 char 財 注釋let x1 財 一行注釋 哈哈 我是多行 注釋 串型別 f 是強型別語言 必須把型別分的清清楚楚的意思。val it string f 是強型別語言 用來幹...

0x3f3f3f3f常量在程式設計中的妙用

今天做了一下一道多源最短路徑的問題,用弗洛伊德演算法的,五分鐘敲完,交一下發現wa了,調了半天才發現初始化鄰接矩陣的inf設定成2147483647 2 31 1 大數相加的時候會溢位,變成很小的負數 為了解決這個問題,我們就在想,要找到這樣乙個大數,滿足加上乙個常數依然是無窮大之外,我們的常量還應...

F 入門 十二 Tuple 元組

元組是f 中特有的一種資料型別,一種非常方便的資料型別,型別為system.tuple 它是一些值的組合,通過逗號來分隔每個元素,元素可以是任何的資料型別。元組和鍊錶的區別 鍊錶 元素的個數是可變的,但元素必須是相同的資料型別。元組 元素的個數是固定的,元素的型別可以是不同的資料型別。使用元組的乙個...