gpt4 book ai didi

ocaml - 此OCaml代码有什么问题?

转载 作者:行者123 更新时间:2023-12-03 08:05:02 26 4
gpt4 key购买 nike

此代码有什么问题?

let vm_run vm =
let guard = ref true in
while !guard do
if vm.cur_pc = -1 && not (Stack.empty vm.call_stack) then vm_pop_ar vm
else if vm.cur_pc = -1 then guard := false
else if vm.cur_pc < Array.length vm.cur_code then
execute vm Array.get vm.cur_code vm.cur_pc;
vm.cur_pc <- vm.cur_pc + 1
else vm_pop_ar vm
done

错误是与最后一个 Error: Syntax error关键字相关的 else

我对OCaml充满信心,但是if/else链仍然给我带来了一些麻烦..这不是第一次(上次我利用flow来避免使用else关键字)。

我认为它很小但是没有任何线索,根据语法规范应该没问题

最佳答案

分号的优先级低于if-else,因此当您需要在if内包含两个或多个由分号分隔的语句的块时,需要将其括在括号或begin...end块中(两者等效):

    else if vm.cur_pc < Array.length vm.cur_code then begin
execute vm Array.get vm.cur_code vm.cur_pc;
vm.cur_pc <- vm.cur_pc + 1
end
else vm_pop_ar vm

关于ocaml - 此OCaml代码有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3183020/

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