OCaml 中多行 if 语句的问题
Trouble with multiline if statments in OCaml
我无法在 Google 上找到明确的答案,但 OCaml 中似乎不鼓励使用多行 if 语句(?)我看到的多行语句似乎有 begin end
中的关键字。
我目前在行 num = (num - temp) / 10
,字符 25-27 上收到此错误:Error: Parse error: "end" expected after [sequence] (in [expr])
。如果我删除所有 begin end
然后我在同一行收到错误 Error: This expression has type bool but an expression was expected of type int
。
let rec reverse_int num =
if num / 10 == 0 then begin
num
end else begin
let temp = num mod 10 in
num = (num - temp) / 10
let numDigits = string_of_int num
temp * (10 * String.length(numDigits)) + reverse_int num
end;;
您的意思可能类似于以下内容。
let rec reverse_int num =
if num / 10 == 0 then begin
num
end else begin
let temp = num mod 10 in
let num = (num - temp) / 10 in
let numDigits = string_of_int num in
temp * (10 * String.length(numDigits)) + reverse_int num
end;;
这里的问题:
行 num = (num - temp) / 10
是布尔类型的值。您的意思是,您希望 num
具有 new 值 (num - temp) / 10
并继续评估;因此将此行替换为 let num = (num - temp) / 10 in
.
行
let numDigits = string_of_int num
temp * (10 * String.length(numDigits)) + reverse_int num
被解析 let numDigits = string_of_int num temp *...
会产生类型错误,因为函数 string_of_int
只有一个参数。这里的in
是必须的。
我无法在 Google 上找到明确的答案,但 OCaml 中似乎不鼓励使用多行 if 语句(?)我看到的多行语句似乎有 begin end
中的关键字。
我目前在行 num = (num - temp) / 10
,字符 25-27 上收到此错误:Error: Parse error: "end" expected after [sequence] (in [expr])
。如果我删除所有 begin end
然后我在同一行收到错误 Error: This expression has type bool but an expression was expected of type int
。
let rec reverse_int num =
if num / 10 == 0 then begin
num
end else begin
let temp = num mod 10 in
num = (num - temp) / 10
let numDigits = string_of_int num
temp * (10 * String.length(numDigits)) + reverse_int num
end;;
您的意思可能类似于以下内容。
let rec reverse_int num =
if num / 10 == 0 then begin
num
end else begin
let temp = num mod 10 in
let num = (num - temp) / 10 in
let numDigits = string_of_int num in
temp * (10 * String.length(numDigits)) + reverse_int num
end;;
这里的问题:
行
num = (num - temp) / 10
是布尔类型的值。您的意思是,您希望num
具有 new 值(num - temp) / 10
并继续评估;因此将此行替换为let num = (num - temp) / 10 in
.行
let numDigits = string_of_int num temp * (10 * String.length(numDigits)) + reverse_int num
被解析let numDigits = string_of_int num temp *...
会产生类型错误,因为函数string_of_int
只有一个参数。这里的in
是必须的。