OCaml阵列切片?

时间:2016-12-23 06:29:13

标签: arrays ocaml slice sub-array

我正在学习OCaml,而我无法发现如何做的一件事就是获取一个数组。例如,如果我想从索引2开始提取3个元素的子数组,我必须这样做:[|array.(2); array.(3); array.(4)|]。这很乏味。是否有任何功能可以轻松快速地提供数组切片?如果没有,我将如何为这种行为推行自己的功能?

非常感谢帮助,谢谢!

2 个答案:

答案 0 :(得分:9)

Array.sub比blit更容易使用:

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

Array.sub a start len返回一个长度为len的新数组,其中包含元素number start to start + len - 1的数组a。

答案 1 :(得分:4)

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

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

  

设b = Array.init 3(有趣的x - >数组。(x + 2));;