OCaml:读取文件中的特定行

OCaml:读取文件中的特定行,ocaml,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_count

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

但它不。。。谁能给我解释一下为什么

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;;

OCaml中的变量永远都是不可变的——它们可以引用可变数据,但变量指向的内容不能更改

因此,命令式样式变量initialize和update可以这样编写:

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
要更新变量引用的值,请执行以下操作:

!var_name
var_name := !var_name + value

OCaml中的变量永远都是不可变的——它们可以引用可变数据,但变量指向的内容不能更改

因此,命令式样式变量initialize和update可以这样编写:

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
要更新变量引用的值,请执行以下操作:

!var_name
var_name := !var_name + value

OCaml中的变量永远都是不可变的——它们可以引用可变数据,但变量指向的内容不能更改

因此,命令式样式变量initialize和update可以这样编写:

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
要更新变量引用的值,请执行以下操作:

!var_name
var_name := !var_name + value

OCaml中的变量永远都是不可变的——它们可以引用可变数据,但变量指向的内容不能更改

因此,命令式样式变量initialize和update可以这样编写:

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
要更新变量引用的值,请执行以下操作:

!var_name
var_name := !var_name + value

作为对@gautamc答案的补充:
=
是相等运算符,因此
line\u counter=line\u counter+1
测试
行计数器
是否等于
行计数器+1
,并忽略结果。作为@gautamc答案的补充:
=
是相等运算符,因此
行计数器=行计数器+1
测试
行计数器
是否等于
行计数器+1
,并忽略结果。作为@gautamc答案的补充:
=
是相等运算符,因此
行计数器=行计数器+1
测试
行计数器
是否等于
行计数器+1
,并忽略结果。作为@gautamc答案的补充:
=
是相等运算符,因此
行计数器=行计数器+1测试
行计数器
是否等于
行计数器+1
,并忽略结果。