質問
これら2つの選択肢のうち、最も頻繁に使用しているのはどれですか。
- f arg(obj.DoStuff())
- f arg< | obj.DoStuff()
解決
全体として、どちらがより慣用的かはわかりません。
個人的に、私が使用するのは< | " raise":
raise <| new FooException("blah")
それとは別に、私は常に括弧を使用します。ほとんどのF#コードはカリー化された関数を使用しているため、通常、これは「追加」を意味しません。括弧:
f arg (g x y)
カリー化されていない関数やコンストラクターになったとき、そしてそれ以外はあまり見栄えが悪くなり始めます:
f arg (g(x,y))
おそらく、優先順位の高いアプリケーションがさらに緊密にバインドされるように、F#言語のルールを変更することを少なくとも検討します。今
f g()
次のように解析
f g ()
しかし、多くの人が次のように解析することを望んでいます
f (g())
(元の質問の動機付けのケース)。これについて強い意見がある場合は、この応答にコメントを残してください。
他のヒント
型推論は左から右に機能するため、 |&gt;
を使用することの利点は、F#が関数の引数の型を推論できることです。
不自然な例として、
[1; 2; 3] |> (fun x -> x.Length*2)
正常に動作しますが、
(fun x -> x.Length*2) [1; 2; 3]
「不定型のオブジェクトのルックアップ」に関する苦情。
私は()をはるかに頻繁に使用しますが、それは単なる好みであり、&lt; |よりイデマティックですが、習慣によって()を使用しています。
可能な限り、私はずっと好きです|&gt;左から右に読み取るためです。
所属していません StackOverflow