如何解决错误:此表达式的类型为 unit 但期望表达式为 int 类型
我正在尝试执行这个简单的 while 循环,但它不起作用。它给了我以下错误:
此表达式具有类型单元,但期望表达式的类型为 输入
let function () =
let current = ref 0 in
let square = ref !current in
while(((square := !current * !current) mod 1000000) != 269696) do
current := !current +1
done;
!square
;;
解决方法
首先,function
是 OCaml 中的关键字,您不能使用它来命名您的函数。
此外,while 循环中的条件有问题:
这个 square := !current * !current
是一个赋值,类型是 unit
。将其用作 mod
的参数是一个类型错误,该参数将两个整数作为输入。
您可能应该在循环内进行赋值,并且只在循环的条件中测试 !square mod 1000000 <> 269696
。
请注意,我使用了 <>
结构不等式,而不是物理不等式 !=
,幸运的是,它对整数也有同样的作用,但除非您知道这一点,否则不应使用它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。