Ocaml - 将数组作为函数的参数传递

Ocaml - Passing an array as an argument of a function

我构建了一个函数,用户可以在其中插入数组大小,然后继续插入其值

  let array_builder =

  let coin = Array.make (10000) 0 in 

  let number_coins = read_int() in

  for i=0 to (number_coins-1) do 

    let k = read_int() in
    coin.(i) <- (k);

  done;

输入看起来像这样:

3 ---> Array size

10 ---> coin.(0)

9 ---> coin.(1)

8 ---> coin.(2)

是否可以将数组 coin 作为参数传递给另一个函数?

在 OCaml 中,数组是常规值,无需特定语法即可传递给其他函数。

也许你想要一个例子。我创建了一个像你的循环一样的虚拟函数。

let rec array_filler coin_array current_index size =
  if current_index < size then
    let k = read_int() in
    let () = coin_array.(current_index) <- k in
    array_filler coin_array (current_index + 1) size
  else
    coin_array

let array_builder =
  let number_coins = read_int() in
  let coin = Array.make number_coins 0 in
  array_filler coin 0 number_coins

我还切换了 2 行,因此 number_coins 在创建数组时可用(如果用户不需要超过 10000,则不保留更多单元格)