2016-08-18 73 views
0

代碼在沒有打印語句的情況下編譯。但是,在打印聲明中,我得到該行上的錯誤Error: This expression has type unit but an expression was expected of type int。我也試着print_string numDigits在OCaml中打印字符串時遇到問題

let rec rev_int num = 
    if num/10 == 0 then 
    num 
    else 
    let temp = num mod 10 in 
    let numDigits = string_of_int num in 
    Printf.printf "%s" numDigits 

    let num = (num - temp)/10 in 
    temp * (10 * String.length(numDigits)) + rev_int num;; 

回答

2

有一個分號中的printf線的末端缺失。

另一種操作系統開始此行與let() =並結束它與in

+0

謝謝;這固定它!出於好奇,在其他代碼'printf'結束時,不分號碼或兩個。爲什麼在這種情況下? – stumped

+0

2分號已過時,旨在分離頂級定義。我建議不要在ocaml交互循環之外使用它(無論如何它都是強制性的)。 – mookid

+0

1分號分隔副作用('單元類型值);例如:'let x = ref 0.0 in for i = 1 to 5 do x:=!x +。 1./.float i; !Printf.printf 「%F \ N」 X;完成;'。編譯器確保';'之前的值的類型爲'unit'(這裏是值'x:=!x +。1./.float i';'Printf.printf「%f \ n」!x '和整個循環。 – mookid

相關問題