F# の復習
今日はパターンマッチに初めて触れました。
C#にもあるけど、F#らしい機能なんだなって感じました。
F# のパターンマッチ
これすごいなぁ。C#だとswitch式のパターンマッチが似てるって思ったけど、きっとF#からC#にいった機能なんだよね。
match式
match式はよく使うと思うのでしっかり覚えなきゃなー。
あとはorパターンとかasパターンとかパターンにも種類があるみたいなので、これもしっかり 記憶。
let testFunc param =
match param with
| 'a' -> 0
| 'b' -> 1
| _ -> -1
let ret = testFunc 'b'
printfn "%A" ret
function式
簡単にいうとfun式とmatch式の合体らしいです。
functionなしでもifでも作れそうと思ったけど、どうなんやろ??
let testFunc = function
| value when value > 0 -> 1
| value when value < 0 -> -1
| _ -> 0
let ret = testFunc 2
printfn "%A" ret
レコード
C#でいったらclassにあたるのかな?
関数はなさそうやけど。
でも副作用をおこさないようにするなら、引数にレコード型をいれて作った方がいいのかな?
C#の拡張メソッド的に。
let favorite = { color = "ret"; number = 7; music = "Jazz" }
let { color = favoriteColor; number = favoriteNumber; music = favoriteMusic} = favorite
printfn "%s, %d, %s" favoriteColor favoriteNumber favoriteMusic
判別共用体
これ今のところ理解率やばいです。
enumが近いってことだけど、値の付随ってのがあるのでこれは使いこなすの難しそう。
でも上手く決まると気持ち良さそうな感じ。
type Fruits =
| Apple
| Orange
| Grape
let favoriteFruits = Apple
printfn "%A" favoriteFruits
ゆっくりやってるので今日はここまで。まだ本の半分までも読めてないけど、終わるのいつだーーー。