2016-12-23 8 views
4

Я изучаю OCaml, и одна вещь, которую я не смог узнать, как это сделать, - это взять срез массива. Например, если я хочу извлечь подмассиво из 3 элементов, начиная с индекса 2, я должен сделать: [|array.(2); array.(3); array.(4)|]. Это утомительно. Есть ли функция, которая может легко и быстро дать срез массива? Если нет, то как мне приступить к выполнению моей собственной функции для такого поведения?OCaml Array Slice?

Настоятельно оцените помощь, спасибо!

ответ

9

Array.sub проще в использовании, чем блитирования:

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

Array.sub начало Len возвращает свежий массив длины Len, содержащие число элементов начинают начать + Длина - 1 из массива а.

+0

это правильный ответ;) –

+0

Отлично, большое вам спасибо! –

3

Существует Array.blit v1 o1 v2 o2 len экземпляры len элементов из массива v1, начиная с номера элемента o1, до массива v2, начиная с номера элемента o2.

Вы также можете использовать Array.init Int -> (Int -> 'а) ->' массив:.

Пусть B = Array.init 3 (весело х -> массив (х + 2)) ;;

+0

Это также было полезно. Спасибо! –

 Смежные вопросы

  • Нет связанных вопросов^_^