为什么不能在OCaml中调用while循环中的函数?

1 ocaml

我正在尝试使用while循环来调用一个函数n次.我做了一个简单的示例,返回此错误"警告10:此表达式应具有类型单位".

let max a b =
if a > b then a else b
;;

let i = ref 0;;

while !i <= 5 do

(* function that is called i times *)
max 2 !i ;

i := !i + 1;

print_int !i

done;;
Run Code Online (Sandbox Code Playgroud)

如何使用while或for循环n次调用函数?

And*_*erg 7

这只是一个警告,它与循环无关.它只是指出你正在调用一个函数但忽略它的结果.通常,这种情况是一种意想不到的错误.在您的示例中,调用max确实无用.

如果你想拥有它并使警告静音,你可以明确忽略结果

ignore (max 2 !i)
Run Code Online (Sandbox Code Playgroud)

  • @ bryan1991如果要打印结果,请调用`ignore`并调用`print_int`或'Printf.printf"%d \n"`.在REPL之外,OCaml(与大多数语言一样)不会打印表达式的结果,除非你告诉它.在REPL中,它仍然只打印整个表达式的结果,而不是每个子表达式. (2认同)