0

所以我在 OCaml 中调试时遇到了麻烦。问题是我正在编写非常简单的代码,但我不断遇到一个似乎很容易解决的问题 - 我只是不知道如何解决!

    let rec multiplier (int1: int) (int2: int) (int3: int) : int =
    let product : int
if int1 >= int2 then(
    if int1 >= int3 then product = int1 * int2
    else product = int1 * int3
)
else if int2 >= int1 then( 
    if int1 >= int3 then product = int2 * int1
    else product = int2 * int3 
)

我一直在第一个“if”下得到一个红色的“x”和一个波浪线,错误:“Unexpected token: if”

谢谢!

4

1 回答 1

2

不要以为=是一个任务;Ocaml 中基本上没有赋值(:=用于引用除外)。

写类似

 let area : int = 
   if side1 >= side2 then ( 
     if side2 >= side3 then side1 * side3
     else side1 * side3
    )
   else if side2 >= side1 then ( 
     if side1 >= side3 then side2 * side1
     else side2 * side3
   )
   else 0 

请记住if... then... else.... 构造是一个表达式;它更像是?:C 的三元条件运算符,而不是它的if语句。

请记住,Ocaml 没有语句,只有表达式。(它的;操作符 ega;b 类似于 C 逗号操作符,a,b意思是计算a,丢弃结果,计算b给出整个表达式的结果)

于 2012-09-09T17:31:33.303 回答