2013-10-20 39 views
1

这条线有问题,这是我想要的: - 我输入(执行时)-g 0,我的与g关联的函数被禁用 - 我输入了-g 1(或任意数字)my功能被启用OCaml - 解析

的想什么,我进入例:

./main.ml -g 1 

我的代码的一部分:

let greytf = ref 0 in 

(...)

let parse_command = 
[("-g", if Arg.Int() <> 0 then ((greytf := 1)) else (greytf := 0) , "Enable I\ 
mage To Grey Mode");] 

在此先感谢

回答

1

布尔引用是更适合于 “标志” 选项:

let _ = 
    let a_flag = ref false in 
    let b_flag = ref false in 
    let opt = [ 
     ("-a", Arg.Set a_flag, 
      " This is a a flag"); 
     ("-b", Arg.Set b_flag, 
      " This is a b flag") 
    ] in 
    Arg.parse 
     (Arg.align opt) 
     (fun a -> raise (Arg.Bad ("Bad argument: "^a))) 
     "Usage: usage message"; 
    (* flag tests *) 
    Printf.printf "A flag: %b\n" !a_flag; 
    Printf.printf "B flag: %b\n" !b_flag 
+0

太感谢你了! –