2011-01-01 13 views
12

可能性の重複:
F# explicit match vs function syntax「fun」の代わりに「function」を使用する場合

こんにちは、

Iは、F#を学んでいますと '楽しさ' と '機能' のキーワードで混乱しています。私の理解は、これらは同じことであるということです。

// Use 'fun' 
let testFunction1 = fun argument -> match argument with 
            | Some(x) -> x 
            | None -> 0 

// Use 'function' 
let testFunction2 = function 
        | Some(x) -> x 
        | None -> 0 

「機能」は、「fun x - > xと一致する」と略記されていますか? 2つのランタイム/最適化の違いはありますか?なぜ私はもう一方を使いたいのですか?

「function」は、コードを読みにくくするように思えます。何か不足していますか?

+6

もしそれが楽しく見える場合は、関数を使用しないでください。それは楽しみを殺す。 – Mehrdad

+0

重複http://stackoverflow.com/questions/1839016/f-explicit-match-vs-function-syntax – Dykam

+0

偽の質問に申し訳ありません!私は他のものを見ませんでした。 –

答えて

1

単純な構文糖です。 C#c => c = 'A'のように、構文糖はdelegate (char c) { return c = 'A'; }です。それはすべて本当に個人的な好みになります。

9

機能は、一つの引数を可能にするが、楽しい関数を定義するために、より一般的かつ柔軟な方法であるが、パターンマッチングを可能にします。ここをクリックしてください:http://caml.inria.fr/pub/docs/manual-ocaml/expr.html

+3

一方、 'function'を使うと' | 'で区切られた複数の節を持つことができます。 –

+0

関数はパターンマッチングを可能にしますが、最後の引数* – symbiont

関連する問題