さて、一番プログラムを書いててお世話になるリストの時間になりました。リストといえば何回か使ってきましたが、このリストはいくつかプロパティを持ってたりします。
let list = [1..10] printfn "list.Head = %d" list.Head printfn "list.Tail = %A" list.Tail printfn "list.Item 1 = %d" (list.Item 1) printfn "list.IsEmpty = %A" list.IsEmpty
実行結果は以下の通りになります。
list.Head = 1 list.Tail = [2; 3; 4; 5; 6; 7; 8; 9; 10] list.Item 1 = 2 list.IsEmpty = false
どれも直感的だとは思いますが、個人的に気持ち悪かったのはTailです。Tailっていうからには最後の要素じゃないの?と思ってたけど2つ目以降の要素全部返すみたいです。
さて、Listの使いかたはまだまだここからが本番です。Listモジュールに鬼のようにメソッドが定義されてます。
こいつらを使えばListに対して色々な処理が可能になります。さらに、前に紹介したパイプ演算子と組み合わせると、まるで流れるように処理がかけるというおまけつき。試しに、1〜10までの数字を2乗して足し合わせた結果を表示するプログラムを書いてみます
// ありあわせの関数を組み合わせると… [1..10] |> List.map (fun x -> x * x) |> List.reduce (fun acc v -> acc + v) |> printfn "合計 = %d" // 普通にループで書くと… let sum = ref 0 for i in [1..10] do sum := !sum + i * i printfn "合計 = %d" !sum
上側がListモジュールにある便利関数を使ったケース。下側が素直?にループやらなんやらで書いた場合。どっちが見やすいかは個人の好みかな?個人的には上のようにサクッと書いてしまいたいぜ。sumみたいな変数を作らなくてもさくっとかけるのがアツイ。
過去記事
- 手軽なスクリプト言語としてのF#
- 手軽なスクリプト言語としてのF# その2
- 手軽なスクリプト言語としてのF# その3
- 手軽なスクリプト言語としてのF# その4
- 手軽なスクリプト言語としてのF# その5
- 手軽なスクリプト言語としてのF# その6
- 手軽なスクリプト言語としてのF# その7
- 手軽なスクリプト言語としてのF# その8「レコード」
- 手軽なスクリプト言語としてのF# その9「クラス」
- 手軽なスクリプト言語としてのF# その10「継承・アブストラクトクラス」
- 手軽なスクリプト言語としてのF# その11「インターフェースと演算子のオーバーロード」
- 手軽なスクリプト言語としてのF# その12「ラムダ式とイベント」
- 手軽なスクリプト言語としてのF# その13「オブジェクト初期化子みたいなの」
- 手軽なスクリプト言語としてのF# その14「合成演算子とパイプ演算子」
- 手軽なスクリプト言語としてのF# その15「WPFしてみた」
- 手軽なスクリプト言語としてのF# その16「総称型 ジェネリック」