我有一个简单的程序:
let dividebyfour (a: int) : int =
a/4;;
但我想检查一个是4的倍数(如4,8,12,16等),如果它不是倍数我想提出异常,比如“不是倍数” 4" 。我该怎么做呢?
答案 0 :(得分:1)
你可以依赖一个事实,即所有可被4个数字整除的低位被设置为零。公式是:
let divisible_by_4 x = x land 3 = 0
在这里,我刚刚测试了两个低位都没有设置为1.
此外,模块划分是相当繁重的操作,所以如果没有它可以做一些任务,那就去做。
因为,你想提出一个异常,当数字不可分割时,最好使用某种断言:
assert (divisible_by_4 16);
答案 1 :(得分:0)
试试这个:
let dividebyfour a =
if a mod 4 =0 then true else false;;
它是一个返回布尔值并使用mod函数
的函数答案 2 :(得分:0)
您可以像这样定义一个例外:
exception Not_multiple_of_4
您可以像这样提出此异常:
raise Not_multiple_of_4
如果你想获得幻想,你可以在例外中包含违规值:
exception Not_multiple_of_4 of int
然后你可以传递错误值:
raise (Not_multiple_of_4 a)