вернуть значения из файла - ocaml - PullRequest
4 голосов
/ 29 ноября 2010

Я пытаюсь прочитать файл и вернуть элемент, считанный из файла, в качестве входных данных для другой функции.

Как я могу вернуть значение, когда я читаю из файла ??Я перепробовал все, что мне известно, и все еще безнадежно потерян.

Мой код выглядит следующим образом:

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 Ответ

4 голосов
/ 29 ноября 2010

Если несколько выражений упорядочены вместе, используя ;, то значение всего выражения является значением последнего выражения в последовательности.

Так что если у вас есть что-то вроде ((x ^ line) :: l); close_in ic, значением этого выражения будет значение close_in ic, которое равно ().

Очевидно, это не то, что вы хотите. Чтобы сделать ((x ^ line) :: l) результатом всего выражения, вы должны поместить его после close_in ic.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...