我开始学习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,但表达式需要类型 单元
答案 0 :(得分:4)
if
函数的上一个unite
没有else
部分。您需要else
类型的int
部分来匹配函数的其余部分。
或者,由于您的两个测试都是详尽且相互排斥的,因此您实际上可以不使用第二个if
。这将是一个更整洁的解决方案。
if x < 5 then
(* x is less than 5 in this branch *)
else
(* x is >= 5 in this branch *)