2009-09-15 24 views

risposta

23

OCaml non ha parametri posizionali opzionali, poiché, poiché OCaml supporta la fase di currying, se si omettono alcuni argomenti sembra proprio un'applicazione parziale. Tuttavia, per i parametri denominati, esistono parametri con nome facoltativo.

normali parametri denominati sono dichiarati in questo modo:

let foo ~arg1 = arg1 + 5;; 

opzionali parametri denominati sono dichiarati in questo modo:

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

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

Nota che eventuali parametri denominati opzionali devono essere seguite da almeno un non-optional parametro, perché altrimenti, per esempio "odp" sopra sembrerebbe solo un'applicazione parziale.

+0

in genere, vorrei semplicemente usare "lascia foo arg1 = arg1 + 5 ;;", senza "~". qual è il punto di questo? –

+0

puoi leggerli qui: http://caml.inria.fr/pub/docs/manual-ocaml/manual006.html#htoc37 – newacct

+2

Il link aggiornato: http://caml.inria.fr/pub/docs/ manuale ocaml/lablexamples.html # sec43 – neo

Problemi correlati