虽然我已经检查过如何打印数组的上一个答案,但我仍然卡在打印阵列数组中。我无法在OCaml中以功能性的方式解决这个问题。
Ocaml: printing out elements in an array of int lists
假设我有一个数组数组。我如何简单地打印这个数组?
mutable ch : t array array;
答案 0 :(得分:5)
打印数组的另一种方法是使用Format模块进行漂亮打印,该模块耦合到Fmt
库,该库提供用于定义打印功能的组合器:
例如,如果你有一个整数数组数组:
let a = [| [|1; 2|]; [|3;4|] |]
我们可以使用
为这些值定义打印机let int_array_array_printer = let open Fmt in
array (array int)
然后我们可以使用Format模块打印数组:
;; Format.printf "@[<v>%a@]@."
int_array_array_printer a
在格式字符串@[<v>%a@]@.
中,可以将不同的元素分解为
@[<v>
打开一个垂直框,从而在每个元素之间打印换行符%a
:下一个元素将使用自己的漂亮打印功能@]
关闭垂直框@.
刷新缓冲区并添加一个新行。答案 1 :(得分:3)
let ch = [| [|"a"; "b"|]; [|"c"|] |]
let () = ch |> Array.iter (Array.iter print_endline)
这使用部分功能应用程序来保持简短。如果我们打开它一点:
let () = ch |> Array.iter (fun xs -> xs |> Array.iter (fun x -> print_endline x))