1
用我的原代碼,我一直就行let numDigits = numDigits - 1 in
麻煩與OCaml的嵌套如果
原始越來越Error: Parse error: [expr level ;] expected after "in" (in [expr])
:
let rec rev_int num =
if num/10 == 0 then
num
else
let temp = num mod 10 in
let numDigits = String.length(string_of_int num) - 1 in
if num < 0 then
let numDigits = numDigits - 1 in
else
let numDigits = numDigits + 0 in
let num = (num - temp)/10 in
temp * int_of_float(10.0 ** float_of_int numDigits) + rev_int num
隨着變化:
if num < 0 then
let numDigits = numDigits - 1 in;
else
let numDigits = numDigits + 0 in;
if num < 0 then
let numDigits = numDigits - 1 in
else begin
let numDigits = numDigits + 0 in end
我修改了代碼,現在它的工作原理,但我想知道是否有辦法做到嵌套,如果和更少的冗餘。
修:
let rec rev_int num =
if num/10 == 0 then
num
else
let temp = num mod 10 in
let numDigits = String.length(string_of_int num) - 1 in
if num < 0 then
let numDigits = numDigits - 1 in
let num = (num - temp)/10 in
temp * int_of_float(10.0 ** float_of_int numDigits) + rev_int num
else
let numDigits = numDigits + 0 in
let num = (num - temp)/10 in
temp * int_of_float(10.0 ** float_of_int numDigits) + rev_int num
也許這是更合適的問上[codereview.SE](http://codereview.stackexchange.com/questions/tagged/ocaml )? –