如何打印数组数组?

时间:2018-01-26 20:59:05

标签: arrays printing ocaml

虽然我已经检查过如何打印数组的上一个答案,但我仍然卡在打印阵列数组中。我无法在OCaml中以功能性的方式解决这个问题。

Ocaml: printing out elements in an array of int lists

假设我有一个数组数组。我如何简单地打印这个数组?

mutable ch               : t array array;

2 个答案:

答案 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))