编写 main() 来调用一个函数
writing main() to call a function
我有一个 OCaml 函数可以将字符串转换为数组。编写 "main" 函数来调用它并打印数组的规范方法是什么。
let createArray pattern patArray =
(* some unimportant way of setting all the elements in the array patArray
based on the string pattern *)
let main () =
let pattern = "Pattern" in
let patArray = Array.create (String.length pattern) 0 in
let res = createArray pattern patArray in
Array.iter ~f:(printf "%d ") patArray;; <------------------
main ()
1) 在上面,如果我省略了 ';;' , 这是行不通的。这有什么意义?
2) 除了使用虚拟绑定 "res" 之外,我能否以某种方式编写两个顺序执行的语句,如下所示:
createArray pattern patArray
Array.iter ~f:(printf "%d ") patArray
如果没有 ;;
,解析器无法知道该行后面的 main ()
调用应该是一个独立的表达式(这里的空格不重要)。
您可以改用以下成语:
let main () = ...
let () = main ()
let () = expr
习语将在该点评估类型 unit
的表达式。初始 let
通知解析器新的顶级 let
构造开始。使用 ;;
是另一种告诉解析器顶级结构结束的方法,但主要用于交互使用。
为了按顺序计算两个表达式,请用分号分隔它们(如果您不确定优先规则,请使用括号或 begin ... end
)。例如:
let patArray = Array.create (String.length pattern) 0 in
createArray pattern patArray;
Array.iter ~f:(printf "%d ") patArray
或者,使用 begin
和 end
使优先级更清楚:
let patArray = Array.create (String.length pattern) 0 in begin
createArray pattern patArray;
Array.iter ~f:(printf "%d ") patArray
end
如果没有 ;
,解析器将不知道下一行的 Array.iter
是否应该是 createArray
调用的附加参数。
我有一个 OCaml 函数可以将字符串转换为数组。编写 "main" 函数来调用它并打印数组的规范方法是什么。
let createArray pattern patArray =
(* some unimportant way of setting all the elements in the array patArray
based on the string pattern *)
let main () =
let pattern = "Pattern" in
let patArray = Array.create (String.length pattern) 0 in
let res = createArray pattern patArray in
Array.iter ~f:(printf "%d ") patArray;; <------------------
main ()
1) 在上面,如果我省略了 ';;' , 这是行不通的。这有什么意义?
2) 除了使用虚拟绑定 "res" 之外,我能否以某种方式编写两个顺序执行的语句,如下所示:
createArray pattern patArray
Array.iter ~f:(printf "%d ") patArray
如果没有 ;;
,解析器无法知道该行后面的 main ()
调用应该是一个独立的表达式(这里的空格不重要)。
您可以改用以下成语:
let main () = ...
let () = main ()
let () = expr
习语将在该点评估类型 unit
的表达式。初始 let
通知解析器新的顶级 let
构造开始。使用 ;;
是另一种告诉解析器顶级结构结束的方法,但主要用于交互使用。
为了按顺序计算两个表达式,请用分号分隔它们(如果您不确定优先规则,请使用括号或 begin ... end
)。例如:
let patArray = Array.create (String.length pattern) 0 in
createArray pattern patArray;
Array.iter ~f:(printf "%d ") patArray
或者,使用 begin
和 end
使优先级更清楚:
let patArray = Array.create (String.length pattern) 0 in begin
createArray pattern patArray;
Array.iter ~f:(printf "%d ") patArray
end
如果没有 ;
,解析器将不知道下一行的 Array.iter
是否应该是 createArray
调用的附加参数。