質問

これら2つの選択肢のうち、最も頻繁に使用しているのはどれですか。

  1. f arg(obj.DoStuff())
  2. 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;左から右に読み取るためです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top