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