F# 今日の勉強(パターンマッチ)
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
ゆっくりやってるので今日はここまで。まだ本の半分までも読めてないけど、終わるのいつだーーー。