繁体   English   中英

OCaml:为什么会出现此错误?

[英]OCaml: Why am I getting this error?

我开始学习OCaml语言。 您能告诉我为什么此代码显示错误吗?

let unite x =
  if x < 100 then x mod 10
  else if x >= 100 then x mod 100;;

let dizaine x =
  if x < 100 then x / 10
  else if x >= 10 then unite(x / 10);;

let centaine x =
  if x >= 100 then x / 100;;


let somme_chiffre x =
  if x >= 100 then unite x + dizaine x + centaine x
  else if x > 9 then unite x + dizaine x
  else unite x;;

let div3 x = if ((somme_chiffre x) mod 3) = 0 then 1 else 0;;

print_int(div3 32);;
print_string("\n");;

错误是:文件“ ./test.ml”,第3行,字符24-33:错误:此表达式的类型为int,但应为单位类型的表达式

您的unite函数的最后一个if没有else部分。 您需要一个int类型的else部分来匹配该函数的其余部分。

或者,由于您的两个测试是详尽无遗且相互排斥的,因此您实际上可以在没有第二个if 那将是一个更整洁的解决方案。

if x < 5 then
    (* x is less than 5 in this branch *)
else
    (* x is >= 5 in this branch *)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM