F#でListの形でデータを扱ってみた
最近マイブームのF#のデータの扱いについて、
自作クラスの配列に格納する方法について試してみました。
やってることは以下の通り。
1)ファイルからtsvのデータを読み込んで各行をListに格納する
2)Listに格納された各行をtabで区切り自作クラスのListに変換する
3)自作クラスのListの指定した要素を標準出力に出力する
<File1.fs>
module File1 open System open System.IO //---------------------------------------------------------- // 定数の定義 // let path = @"C:\test.txt"; //---------------------------------------------------------- // データ格納クラスの定義 // type BookData = class val ISBN10 : string val ISBN13 : string val TITLE : string new(isbn10, isbn13, title) = { ISBN10 = isbn10 ISBN13 = isbn13 TITLE = title } end;; //---------------------------------------------------------- // サブルーチンの定義 // let println (x : BookData) = printfn "%s" x.TITLE let readTextFile (x : string) = File.ReadLines(x) |> Seq.toList let splitTextRow (x : string) = x.Split([|'\t'|]) let makeBookData (x : string []) = new BookData( x.GetValue(0).ToString() , x.GetValue(1).ToString(), x.GetValue(2).ToString()) //---------------------------------------------------------- // メインの処理 // let result3 = List.map makeBookData (List.map splitTextRow (readTextFile path)) List.iter println result3
F#はマルチパラダイム言語なので、基本的にはOOPの考え方でコードは書けます。
(そうでないと僕の場合困ります。)
ただ、データの処理においては関数型プログラミングの書き方ができるので、
ずいぶん読みやすく、スッキリと書くことができます。