2009-09-15 10 views

Répondre

23

OCaml n'a pas de paramètres positionnels optionnels car, puisque OCaml prend en charge la correction, si vous omettez certains arguments, cela ressemble à une application partielle. Cependant, pour les paramètres nommés, il existe des paramètres nommés facultatifs.

paramètres normaux nommés sont déclarés comme ceci:

let foo ~arg1 = arg1 + 5;; 

paramètres optionnels nommés sont déclarés comme ceci:

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

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

Notez que tous les paramètres nommés en option doivent être suivies par au moins un non-option paramètre, car sinon "odp" ci-dessus ressemblerait à une application partielle.

+0

typiquement, je voudrais simplement utiliser "let foo arg1 = arg1 + 5 ;;", sans le "~". Quel est le but de ça? –

+0

vous pouvez lire à leur sujet ici: http://caml.inria.fr/pub/docs/manual-ocaml/manual006.html#htoc37 – newacct

+2

Le lien mis à jour: http://caml.inria.fr/pub/docs/ manual-ocaml/lablexamples.html # sec43 – neo

Questions connexes