記得Tuple是用小(圓)括號嗎? F#的List則是用中(角)括號。
> let list123 = [1;2;3];; |
可以看到list123是一個 int list的型別, 內容是1; 2; 3, 也可以知道list裡的分隔是用";"來代表的, 和tuple不同, tuple是用","來做為分隔, 這一點很重要, 避免誤用。
let list123 = [ 1 2 3 ];; |
上面的例子也說明了, 如果是用換行來做為分隔的話, 則不用分號了, tuple也是一樣的。但是為了減少行數, 在可以理解的長度內, 還是建議使用少一點的行數就行了…
另外在初始化list的過程中, 也可以使用一些特別的方法:
let listOfSquares = [ for i in 1 .. 10 -> i*i ];; |
這樣一來, 內容就是1~10的平方數了。
對於list的操作, 可以想像一下原有在程式裡我們最想抓取的應該是頭尾, 以及插入一筆資料的操作, 因為和array不同的是 (array還沒有學到), list是可以隨時在中間插入或是刪除的。
我們假設有一個list1是[2; 3; 4], 以及我們想在最前面加入一個100的數字, 於是我們可以這麼表達。
let list2 = 100 :: list1;; |
另外我們也可以將兩個list做連結。
let list3 = list1 @ list2;; |
list本身其實是一個類別, 有自己的property, 在MSDN上面可以找到有這些可以使用:
let list1 = [ 1; 2; 3 ] // Properties printfn "list1.IsEmpty is %b" (list1.IsEmpty);; printfn "list1.Length is %d" (list1.Length);; printfn "list1.Head is %d" (list1.Head);; printfn "list1.Tail.Head is %d" (list1.Tail.Head);; printfn "list1.Tail.Tail.Head is %d" (list1.Tail.Tail.Head);; printfn "list1.Item(1) is %d" (list1.Item(1));; |
沒有留言:
張貼留言