私は警告FS0020に関する情報を調べるための「標準的な」場所になってきて、このWEGページを想像することができるので、ここでは3最も一般的な例私の簡単な要約があります:このような例
警告が表示され、修正方法が表示されます。
意図的にのみ、その副作用のために呼び出される関数の結果を破棄:
// you are calling a function for its side-effects, intend to ignore result
let Example1Orig() =
let sb = new System.Text.StringBuilder()
sb.Append("hi") // warning FS0020
sb.Append(" there") // warning FS0020
sb.ToString()
let Example1Fixed() =
let sb = new System.Text.StringBuilder()
sb.Append("hi") |> ignore
sb.Append(" there") |> ignore
sb.ToString()
警告(関数は全く効果がない)エラーを指摘し、有用である:
// the warning is telling you useful info
// (e.g. function does not have an effect, rather returns a value)
let Example2Orig() =
let l = [1;2;3]
List.map (fun x -> x * 2) l // warning FS0020
printfn "doubled list is %A" l
let Example2Fixed() =
let l = [1;2;3]
let result = List.map (fun x -> x * 2) l
printfn "doubled list is %A" result
混同している代入演算子と等価比較演算子:
// '=' versus '<-'
let Example3Orig() =
let mutable x = 3
x = x + 1 // warning FS0020
printfn "%d" x
let Example3Fixed() =
let mutable x = 3
x <- x + 1
printfn "%d" x
問題を解決したおかげで、私はそう長くのためにそれを見つめた後:) 私の目標は、関数型プログラミングのスタイルを学ぶことですが、勉強には少し時間と、それは非常に遅いだと逃した信じることができませんプロセス。 – Paxxi
ええ、十分に公正。関数型プログラミングは、以前は命令型言語(例えばC/C#/ Java)のみを行っていたコーダーにとって大きなショックとなることがあります。時間の経過とともに学ぶことができる、まったく異なる思考方法が必要です。 – Noldorin
しかし、F#の素晴らしい点の1つは、おなじみのコーディングスタイル(無条件)から始めることができ、まだ生産的である間にfuntional mindesetに容易にできることです。 –