これら 2 つの選択肢のうち、最も頻繁に使用しているのはどちらで、どちらがより「慣用的」ですか?
- f arg (obj.DoStuff())
- f 引数 <| obj.DoStuff()
これら 2 つの選択肢のうち、最も頻繁に使用しているのはどちらで、どちらがより「慣用的」ですか?
全体として、どちらかがより慣用的であるかどうかはわかりません。
個人的には、私が使用するのは<| 「レイズ」付きです:
raise <| new FooException("blah")
それとは別に、私はいつもパレンを使います。ほとんどのF#コードはカレー関数を使用しているため、これは通常、「余分な」括弧を意味するものではないことに注意してください。
f arg (g x y)
カレーのない関数やコンストラクターに入ると、きれいになり始めます。
f arg (g(x,y))
おそらく、少なくともF#言語のルールを変更して、優先順位の高いアプリケーションがさらに緊密にバインドされるようにすることを検討します。たった今
f g()
次のように解析します
f g ()
しかし、多くの人はそれを次のように解析したいと思っています
f (g())
(元の質問の動機付けのケース)。これについて強い意見がある場合は、この回答にコメントを残してください。
型推論は左から右に機能するため、使用の|>
利点は、F#が関数の引数の型を推論できることです。
不自然な例として、
[1; 2; 3] |> (fun x -> x.Length*2)
正常に動作しますが
(fun x -> x.Length*2) [1; 2; 3]
「不確定なタイプのオブジェクトのルックアップ」について不平を言います。
左から右に読むため、できる限り |> を好みます。
私は () をはるかに頻繁に使用しますが、それは好みにすぎません。はより偶像的ですが、私は習慣で () を使用します。