【发布时间】:2015-02-07 08:02:47
【问题描述】:
我对 OCaml 很陌生,正在尝试编写一个接受字符串和 int 的函数。它打印出“Hello,” + 传入的字符串,然后返回 1+ int。到目前为止我有这个,但它似乎没有工作:
let random_func s n = print_string "Hello, "; print_string s;1+n;;
任何想法我做错了什么?
【问题讨论】:
我对 OCaml 很陌生,正在尝试编写一个接受字符串和 int 的函数。它打印出“Hello,” + 传入的字符串,然后返回 1+ int。到目前为止我有这个,但它似乎没有工作:
let random_func s n = print_string "Hello, "; print_string s;1+n;;
任何想法我做错了什么?
【问题讨论】:
您的代码完全符合您的要求:
# let random_func s n = print_string "Hello, "; print_string s;1+n;;
val random_func : string -> int -> int = <fun>
# random_func "yow" 4;;
Hello, yow- : int = 5
也许问题在于解释顶层的输出?函数的输出紧跟顶层输出。
【讨论】:
如果您在程序中使用您的代码(而不是在顶层)并且您希望输出立即可见(例如在从用户获得一些输入之前),您可能还需要刷新缓冲区:
let random_func s n =
print_string "Hello, ";
print_string s;
flush stdout;
1+n
;;
无论如何,这与您的函数返回一个 int 的事实无关。
【讨论】: