0
코드가 print 문없이 컴파일됩니다. 그러나 print 문을 사용하면 해당 줄에 오류가 발생합니다 (Error: This expression has type unit but an expression was expected of type int
). 또한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
세미콜론은 부작용 ('unit' typed values)을 분리하는 것입니다. ex :'i = 1에서 5까지 do x = ref 0.0 in do x : =! x +. 1./.float i; Printf.printf "% f \ n"! x; 완료; 컴파일러는'; '앞에 오는 값이'unit' 유형인지 확인합니다 (여기에'x : =! x + .1/.float i'','Printf.printf "% f \ n"! x '그리고 전체 루프. – mookid