【问题标题】:OCaml Array Slice?OCaml 数组切片?
【发布时间】:2017-05-08 20:30:10
【问题描述】:

我正在学习 OCaml,但我无法发现如何做的一件事是获取数组的一部分。例如,如果我想提取从索引 2 开始的 3 个元素的子数组,我必须这样做:[|array.(2); array.(3); array.(4)|]。这变得乏味。有没有什么函数可以方便快速的给出一个数组切片?如果没有,我将如何为这种行为滚动我自己的函数?

非常感谢您的帮助,谢谢!

【问题讨论】:

    标签: arrays ocaml slice sub-array


    【解决方案1】:

    Array.sub 比 blit 更容易使用:

    let v=[|0;1;2;3;4;5|];;
    let v'=Array.sub v 2 3;;
    # val v' : int array = [|2; 3; 4|]
    

    Array.sub astart len 返回一个长度为 len 的新数组,
    包含数组 a 的元素编号 startstart + len - 1

    【讨论】:

      【解决方案2】:

      Array.blit v1 o1 v2 o2 len 将数组 v1 中的 len 个元素从元素编号 o1 开始复制到数组 v2 中,从元素编号 o2 开始。

      你也可以使用 Array.init int -> (int -> 'a) -> 'a 数组:

      让 b = Array.init 3 (fun x -> array.(x+2));;

      【讨论】:

      • 这也很有用。非常感谢!
      猜你喜欢
      • 2012-11-10
      • 2014-05-23
      • 2021-09-04
      • 2012-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多