Справочные таблицы в OCaml

Я нашел ответ в теме о связывании клавиш, но не могу перефразировать эту тему. Я добавил 2 новых модуля в свой документ, модуль 1 имеет:

Опция Явная

Sub AddKeyBinding()
    With Application
         ' \\ Do customization in THIS document
        .CustomizationContext = ThisDocument

         ' \\ Add keybinding to this document Shorcut: Alt+r
        .KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyAlt, wdKeyR), _
        KeyCategory:=wdKeyCategoryCommand, _
        Command:="TestKeybinding"

End With
End Sub

Модуль 2

Option Explicit

 ' \\ Test sub for keybinding
Sub TestKeybinding()
    Channel_Select.Show
End Sub

Запустите макрос AddKeyBinding, тогда alt + r будет запустить пользовательскую форму в документе

5
задан Mat Kelly 6 February 2009 в 11:52
поделиться

3 ответа

Если строки обращены с помощью последовательных целых чисел, Вы могли бы использовать массив.

Иначе можно использовать (нефункциональную) хеш-таблицу или (функциональная) Карта. Начать с попыткой Карты:

module Int =
struct
  type t = int
  let compare = compare
end ;;

module IntMap = Map.Make(Int) ;;

Если таблица является слишком большой для хранения в памяти, Вы могли бы сохранить ее во внешней базе данных и использовать привязку к dbm, bdb, sqlite...

8
ответ дан 18 December 2019 в 09:54
поделиться

Для хранения таблицы в отдельном файле (например, как массив) просто создайте файл strings.ml с содержанием:

let tbl = [|
    "String 0";
    "String 1";
    "String 2";
    ...7000 more...
|]

Скомпилируйте это с:

ocamlc -c strings.ml

Как объяснено в руководстве, это определяет модуль Strings то, что другие модули Ocaml могут сослаться. Например, можно запустить верхний уровень:

ocaml strings.cmo

И поиск строка путем доступа к особому положению в массиве:

Strings.tbl.(1234) ;;
4
ответ дан 18 December 2019 в 09:54
поделиться
let table : (int,string) Hashtbl.t = Hashtbl.create 8192
5
ответ дан 18 December 2019 в 09:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: