OCaml:读取文件中的特定行

时间:2014-03-03 16:43:58

标签: ocaml

我的问题很简单,我想读一个文件中的第三行。这是我的代码,我认为它应该可行。

但它没有......有人可以为我解释原因吗?

open Printf

let filename = "T:\\Soton Uni\\ok.txt"

let () =
    let ic = open_in filename in
    let line_counter = 0 in
      try
         while true; do
             line_counter = line_counter + 1;
             let line = input_line ic in
                if line_counter = 3 then
                   print_endline line;
         done;
      flush stdout;
      close_in ic
with e ->
close_in_noerr ic;;

1 个答案:

答案 0 :(得分:3)

OCaml中的变量永远不可变 - 它们可以引用可变数据,但变量指向的变量无法更改。

因此,命令式样式变量初始化和更新可以这样写:

let line_counter = ref 0 in
  while true; do
    line_counter := !line_counter + 1
    if !line_counter = 3 then
      print .....
  done;

使用引用初始化变量:

let  var_name = ref value;

要取消引用变量引用的值:

!var_name

更新变量所引用的值:

var_name := !var_name + value