gpt4 book ai didi

compiler-errors - 键入int ref但应为int

转载 作者:行者123 更新时间:2023-12-02 10:54:02 24 4
gpt4 key购买 nike

let nombredeCubes = ref 0  in
for i = 1 to 17 do
nombredeCubes := nombredeCubes + i*i*i
i := i+1
done;
print_int nombredeCubes;

当我尝试编译此代码时,出现以下错误:
line 3, characters 20-33:
Error: This expression has type int ref
but an expression was expected of type int

但是我不明白为什么。我的意思是为什么“for”期望一个int而不是int ref,“for”是一个函数?

最佳答案

您需要使用!运算符来访问ref单元的值:

nombredeCubes := !nombredeCubes + i*i*i

您也不应(也不允许)手动增加 i。 for构造将为您做到这一点。

编辑:使用递归代替突变和命令式编程来解决此问题会更加惯用。它还可以使步伐更加清晰:
let nombredeCubes =
let rec loop acc = function
| i when i > 0 -> loop (acc + i*i*i) (i-2)
| _ -> acc
in loop 0 17
in print_int nombredeCubes

关于compiler-errors - 键入int ref但应为int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46630213/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com