【问题标题】:OCaml how to return a value after printing string?OCaml如何在打印字符串后返回一个值?
【发布时间】:2015-02-07 08:02:47
【问题描述】:

我对 OCaml 很陌生,正在尝试编写一个接受字符串和 int 的函数。它打印出“Hello,” + 传入的字符串,然后返回 1+ int。到目前为止我有这个,但它似乎没有工作:

let random_func s n = print_string "Hello, "; print_string s;1+n;;

任何想法我做错了什么?

【问题讨论】:

    标签: function return ocaml


    【解决方案1】:

    您的代码完全符合您的要求:

    # 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
    

    也许问题在于解释顶层的输出?函数的输出紧跟顶层输出。

    【讨论】:

      【解决方案2】:

      如果您在程序中使用您的代码(而不是在顶层)并且您希望输出立即可见(例如在从用户获得一些输入之前),您可能还需要刷新缓冲区:

      let random_func s n =
        print_string "Hello, ";
        print_string s;
        flush stdout;
        1+n
      ;;
      

      无论如何,这与您的函数返回一个 int 的事实无关。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-12
        • 2021-02-24
        • 2020-07-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多