2016-10-20 3 views
0

Im»в OCaml и Im'trying сделать это:.OCaml - Как преобразовать строку в int? новичку

let medio a b = 
    (a + b);; 
let() = Printf.printf "%d + %d = %d\n" Sys.argv.(1) Sys.argv.(2) (medio Sys.argv.(1) Sys.argv.(2))  

sys.argv (1) должен быть аргумент [1] ~ в C

Теперь я хотите использовать их как параметры для моей функции medio, но они строки. Как я могу паразитировать их в int? Есть ли функция ocaml для этого? В Python является Int (Sys.argv. (2)) или INT atoi (Const символ * ул) в С в OCaml?

ответ

5

Вы можете использовать функцию «int_of_string», описанную в documentation.

+0

Хорошо это прекрасно !!! – Teshtek

4

Я бы начал с int_of_string. Как правило, стандартная библиотека OCaml обеспечивает функцию, которая преобразует между типами, следующий видом <output>_of_<input>, например, float_of_string, string_of_int и т.д.

0

Вы можете использовать модуль Arg для анализа аргументов командной строки.

Пример: 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; 

Чтобы использовать его

./test -a 2 -b 3 
2 3 
Смежные вопросы