Frage

Welche dieser beiden Alternativen finden Sie sich am häufigsten verwendet wird, und das ist mehr „idiomatische“?

  1. f arg (obj.DoStuff ())
  2. f arg <| obj.DoStuff ()
War es hilfreich?

Lösung

Insgesamt, ich weiß nicht, dass das eine oder andere mehr idiomatische ist.

persönlich das einzige Mal, dass ich mit <| ist mit "heben":

raise <| new FooException("blah")

Abgesehen davon, dass ich immer Pars. Beachten Sie, dass, da die meisten F # Code curried Funktionen verwendet, bedeutet dies nicht der Regel impliziert keine „extra“ Pars:

f arg (g x y)

Es ist, wenn Sie in nicht-curried Funktionen und Konstrukteure bekommen und so weiter, dass es anfängt, weniger hübsch:

f arg (g(x,y))

Wir werden wahrscheinlich mindestens betrachten die # Sprachen F ändernde Regeln so, dass High-Vorrang-Anwendungen binden noch fester; jetzt

f g()

parst wie

f g ()

aber eine Menge Leute würden es gerne so analysieren

f (g())

(der motivierende Fall in der ursprünglichen Frage). Wenn Sie eine starke Meinung zu diesem Thema haben, lassen Sie einen Kommentar zu dieser Antwort.

Andere Tipps

Da Typinferenz von links nach rechts arbeitet, ein Bonus |> der Verwendung ist, dass es F # ermöglicht den Typ des Arguments der Funktion zu schließen.

Als konstruiertes Beispiel,

[1; 2; 3] |> (fun x -> x.Length*2)

funktioniert ganz gut, aber

(fun x -> x.Length*2) [1; 2; 3]

klagt über "Lookup-Objekt von unbestimmter Art".

Ich benutze () viel viel häufiger, aber das ist nur Präferenz, ich bin ziemlich sicher, dass <| mehr idiomatische ist, aber ich benutze () durch Gewohnheit.

Wenn möglich, ich viel lieber |.>, Weil sie von rechts nach links lesen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top