从文件返回值 - ocaml

时间:2010-11-29 19:58:54

标签: ocaml

我正在尝试读取文件并将从文件中读取的元素作为另一个函数的输入返回。

当我从文件中读取时,如何返回值? 我尝试了所有我所知道的东西,但仍然无可救药地失去了。

我的代码如下:

let file = "code.txt";;

let oc  = open_out file in    (* create or truncate file, return channel *)

    fprintf oc "%s\n" (play);   (* write code to file returned from calling (play) function *)   

    close_out oc    ;;


(*read from file*)


let read l=

    let f x =

        let ic  = open_in file in

        let line = input_line ic in  (* read line from in_channel and discard \n *)

            print_endline line;          (* write the result to stdout *)

                ((x ^ line) :: l);

            flush stdout;                

            close_in ic ;
    in
     f l
    ;;

prompt:  read;; function call outputs:

- : unit = ()

我的文件包含一个字符串,该字符串是另一个函数的输入所需的代码。

请帮忙。我不知道我哪里出错了。

谢谢。

1 个答案:

答案 0 :(得分:4)

如果使用;对多个表达式进行排序,则整个表达式的值是序列中最后一个表达式的值。

因此,如果您有((x ^ line) :: l); close_in ic之类的内容,则该表达式的值为close_in ic的值,即()

显然这不是你想要的。为了使((x ^ line) :: l)成为整个表达式的结果,您应该将其放在close_in ic之后。