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;;
Спасибо; это фиксировало это! Просто из любопытства, на другом коде 'printf' заканчивается либо без двоеточия, либо с двумя. Почему в этом случае? – stumped
2 точки с запятой устарели и предназначены для разделения определений верхнего уровня. Я рекомендую не использовать его вне интерактивного цикла ocaml (там, где это обязательно). – mookid
1 точка с запятой состоит в разделении побочных эффектов (введенные значения 'unit'); ex: 'let x = ref 0.0 in for i = 1 to 5 do x: =! x +. 1./.float i; ! Printf.printf "% е \ п" х; сделано; '. Компилятор гарантирует, что значения перед ';' имеют тип 'unit' (здесь значения' x: =! X +. 1./.float i'; 'Printf.printf"% f \ n "! X 'и весь цикл. – mookid