2010-12-13 6 views
5

Eine einfache Frage ... Ist es eine gute Übung, eine Funktion zu definieren, die mehr als einen Parameter über Tupel akzeptiert?Definieren von Parametern in F # -Funktionen, ist es besser Tupel zu verwenden?

erkläre ich mich besser: habe ich eine Funktion:

let myfunc par1 par2 = ...;; 

Ist es gut zu so?

Wenn ich sage "ist es gut" sage ich: Ist es eine gute Praxis ist es gut, dies IMMER als allgemeine Praxis zu tun, um Parameter an eine Funktion zu übergeben?

Danke

Antwort

5

Normal F # Stil Funktionen curried, das heißt nicht-fach vervielfachten nach Ihrem ersten Beispiel zu definieren.

Currying können Sie dies tun: („partial-Anwendung“)

let myfunc par1 par2 = ... 
let myfuncHello = myfunc "Hello" 
myfuncHello "World" // same as: myfunc "Hello" "World" 

Wenn Sie jedoch Ihren Code aussetzen anderen Sprachen als F # auf .NET, bleiben fache Vervielfachung, da es schwer ist, curried Funktionen aufrufen, außer von F #.

Edit: aus der brandneuen F # Snippets Website: http://fssnip.net/I

+0

Ah ok ... jetzt kann ich sehen, wo nützliche fach vervielfachten Notation ist ... ah eine Frage traurig: so die erste Schreibweise currying genannt? (Ich kann deine Antwort immer noch nicht akzeptieren, weil ich 5 Minuten warten muss :)). – Andry

+1

Das stimmt: In der ersten Notation haben Sie eine Curry-Funktion definiert; myfunc ist curried. Wenn du es so nennst wie in meiner Antwort, hast du es teilweise angewendet. Diese Begriffe sind häufig verwechselt: http://en.wikipedia.org/wiki/Currying#Contrast_with_partial_function_application –

+0

Ja, ich habe es gelesen vorher, es ist sehr cool currying ... Vielen Dank. – Andry

Verwandte Themen