2009-09-15 12 views

Antwort

23

OCaml hat keine optionalen Positionsparameter, da OCaml das Currying unterstützt, wenn Sie einige Argumente weglassen, sieht es nur wie eine partielle Anwendung aus. Für benannte Parameter gibt es jedoch optionale benannte Parameter.

Normale benannte Parameter werden wie folgt erklärt:

let foo ~arg1 = arg1 + 5;; 

Optional benannte Parameter werden wie folgt erklärt:

let odp ?(ftw = "OMG!!")() = print_endline ftw;; 

(* and can be used like this *) 
odp ~ftw:"hi mom"();; 
odp();; 

Beachten Sie, dass alle optionalen benannte Parameter müssen durch mindestens ein nicht-optional gefolgt werden Parameter, weil sonst zB "odp" oben nur wie eine Teilapplikation aussehen würde.

+0

Normalerweise würde ich einfach "let foo arg1 = arg1 + 5 ;;" verwenden, ohne das "~". Was ist der Sinn? –

+0

können Sie über sie hier lesen: http://caml.inria.fr/pub/docs/manual-ocaml/manual006.html#htoc37 – newacct

+2

Der aktualisierte Link: http://caml.inria.fr/pub/docs/ manual-ocaml/lablexamples.html # sec43 – neo