2009-09-15 14 views

Respuesta

23

OCaml no tiene parámetros posicionales opcionales, ya que, como OCaml admite el currying, si omite algunos argumentos, simplemente parece una aplicación parcial. Sin embargo, para los parámetros con nombre, hay parámetros con nombre opcionales.

parámetros con nombre normales se declaran así:

let foo ~arg1 = arg1 + 5;; 

parámetros con nombre opcionales se declaran así:

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

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

en cuenta que cualquier parámetros con nombre opcionales deben ser seguidos por al menos una no opcional parámetro, porque de lo contrario, por ejemplo, "odp" anterior simplemente parecería una aplicación parcial.

+0

típicamente, yo solo usaría "let foo arg1 = arg1 + 5 ;;", sin el "~". ¿Cuál es el punto de esto? –

+0

puede leer sobre ellos aquí: http://caml.inria.fr/pub/docs/manual-ocaml/manual006.html#htoc37 – newacct

+2

El enlace actualizado: http://caml.inria.fr/pub/docs/ manual-ocaml/lablexamples.html # sec43 – neo

Cuestiones relacionadas