Im’ newbie în Ocaml și Im’încearcă să facă acest lucru:
let medio a b =
(a + b);;
let () = Printf.printf "%d + %d = %d
" Sys.argv.(1) Sys.argv.(2) (medio Sys.argv.(1) Sys.argv.(2))
Sys.argv.(1) trebuie să fie arg[1] ~ în C
Acum vreau să le folosesc ca parametri pentru funcția mea medio, , dar ele sunt șiruri de caractere. Cum pot să le parasez în int ? Există o funcție ocaml care să facă acest lucru?În python este int(Sys.argv.(2)) sau int atoi(const char *str) în C în ocaml ?
Ați putea folosi funcția „int_of_string” descrisă în manualul documentația.
Eu aș începe cu int_of_string. În general, biblioteca standard OCaml oferă funcții, care convertește între tipuri, de următoarea formă <output>_of_<input>
, , de exemplu, float_of_string
, , string_of_int
, , etc.
Puteți utiliza Arg
pentru a analiza argumentele liniei de comandă.
Exemplu: test.ml
let ri_a=ref 0 in
let ri_b=ref 0 in
Arg.parse [
("-a",Arg.Int (function i -> ri_a:=i),"");
("-b",Arg.Int (function i -> ri_b:=i),"");
] (function s -> ()) "ERROR";
Printf.printf "%d %d" !ri_a !ri_b;
Pentru a-l utiliza
./test -a 2 -b 3
2 3