Я нашел ответ в теме о связывании клавиш, но не могу перефразировать эту тему. Я добавил 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 будет запустить пользовательскую форму в документе
Если строки обращены с помощью последовательных целых чисел, Вы могли бы использовать массив.
Иначе можно использовать (нефункциональную) хеш-таблицу или (функциональная) Карта. Начать с попыткой Карты:
module Int =
struct
type t = int
let compare = compare
end ;;
module IntMap = Map.Make(Int) ;;
Если таблица является слишком большой для хранения в памяти, Вы могли бы сохранить ее во внешней базе данных и использовать привязку к dbm, bdb, sqlite...
Для хранения таблицы в отдельном файле (например, как массив) просто создайте файл strings.ml
с содержанием:
let tbl = [|
"String 0";
"String 1";
"String 2";
...7000 more...
|]
Скомпилируйте это с:
ocamlc -c strings.ml
Как объяснено в руководстве, это определяет модуль Strings
то, что другие модули Ocaml могут сослаться. Например, можно запустить верхний уровень:
ocaml strings.cmo
И поиск строка путем доступа к особому положению в массиве:
Strings.tbl.(1234) ;;
let table : (int,string) Hashtbl.t = Hashtbl.create 8192