OCaml 数组切片?
OCaml Array Slice?
我正在学习 OCaml,但我无法发现如何做的一件事是获取数组的一部分。例如,如果我想提取从索引 2 开始的 3 个元素的子数组,我必须这样做:[|array.(2); array.(3); array.(4)|]
。这变得乏味。有没有什么函数可以简单快捷的给出一个数组切片呢?如果没有,我将如何为这种行为滚动我自己的函数?
非常感谢您的帮助,谢谢!
Array.blit v1 o1 v2 o2 len
从数组 v1 复制 len 个元素,从元素编号 o1 开始,到数组 v2,从元素编号 o2 开始。
你也可以使用 Array.init int -> (int -> 'a) -> 'a array :
let b = Array.init 3 (fun x -> array.(x+2));;
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 a
开始 len returns 一个长度为 len 的新数组,
包含数组 a.
的元素编号 start 到 start + len - 1
我正在学习 OCaml,但我无法发现如何做的一件事是获取数组的一部分。例如,如果我想提取从索引 2 开始的 3 个元素的子数组,我必须这样做:[|array.(2); array.(3); array.(4)|]
。这变得乏味。有没有什么函数可以简单快捷的给出一个数组切片呢?如果没有,我将如何为这种行为滚动我自己的函数?
非常感谢您的帮助,谢谢!
Array.blit v1 o1 v2 o2 len
从数组 v1 复制 len 个元素,从元素编号 o1 开始,到数组 v2,从元素编号 o2 开始。
你也可以使用 Array.init int -> (int -> 'a) -> 'a array :
let b = Array.init 3 (fun x -> array.(x+2));;
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 a
开始 len returns 一个长度为 len 的新数组,
包含数组 a.