此功能:
let rec foo () =
try
let line = input_line stdin in
(try
Mparser.tex_expr lexer_token_safe (Lexing.from_string line);
print_string ("SUCCESS\n")
with
Mtexutil.Illegal_tex_function s -> print_string ("$T" ^ s ^ " " ^ line ^ "\n")
| LexerException s -> print_string ("$L" ^ line ^ "\n")
| Parsing.Parse_error -> print_string ("$P" ^ line ^ "\n")
| _ -> print_string ("$S " ^ line ^ "\n"));
flush stdout;
foo ();
with
End_of_file -> ()
;;
给出错误:
Warning 10: this expression should have type unit.
表示以Mparser.tex
开头的行。
如何解决此警告?
答案 0 :(得分:4)
似乎编译器警告您Mparser.tex_expr
返回您未使用的值。你可以通过明确表示你故意甩掉价值来摆脱警告。这就是ignore
函数的用途:
ignore (Mparser.tex_expr lexer_token_safe (Lexing.from_string line));
在某些情况下,我认为使用let ... in
而不是分号可以更好地阅读:
let _ = Mparser.tex_expr lexer_token_safe (Lexing.from_string line) in
...