为什么不能在OCaml中调用while循环中的函数?
我尝试使用while循环调用函数n次。我已经做了一个简单的例子,返回这个错误警告10:这个表达式应该有unit类型为什么不能在OCaml中调用while循环中的函数?,ocaml,Ocaml,我尝试使用while循环调用函数n次。我已经做了一个简单的例子,返回这个错误警告10:这个表达式应该有unit类型 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;; 如何使用while或for循环n次调用函数?这只
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;;
如何使用while或for循环n次调用函数?这只是一个警告,与循环无关。它只是指出您正在调用一个函数,但忽略了它的结果。通常,这种情况是一个意外的错误。在您的示例中,对max的调用实际上是无用的 如果你想让它安静下来,你可以通过这样做来忽略结果
ignore (max 2 !i)
这只是一个警告,与循环无关。它只是指出您正在调用一个函数,但忽略了它的结果。通常,这种情况是一个意外的错误。在您的示例中,对max的调用实际上是无用的 如果你想让它安静下来,你可以通过这样做来忽略结果
ignore (max 2 !i)
嗨,谢谢你的回复。为什么函数的结果被忽略?我希望它能打印出我调用的函数的结果recall@bryan1991如果要打印结果,请将忽略替换为调用print\u int或Printf.Printf%d\n。在REPL之外,OCaml和大多数语言一样,除非您告诉它,否则不会打印表达式的结果。在REPL中,它仍然只打印整个表达式的结果,而不是每个子表达式。嗨,谢谢你的回复。为什么函数的结果被忽略?我希望它能打印出我调用的函数的结果recall@bryan1991如果要打印结果,请将忽略替换为调用print\u int或Printf.Printf%d\n。在REPL之外,OCaml和大多数语言一样,除非您告诉它,否则不会打印表达式的结果。在REPL中,它仍然只打印整个表达式的结果,而不是每个子表达式的结果。