9.3 Имена
Идентификаторы используются для присвоения имён нескольким классам объектов языка и для ссылки на эти объекты по имени позже:
- имена значений (синтаксический класс value-name),
- конструкторы значений и конструкторы исключений (класс constr-name),
- метки (label-name, определены в разделе 9.1),
- теги полиморфных вариантов (tag-name),
- конструкторы типов (typeconstr-name),
- поля записей (field-name),
- имена классов (class-name),
- имена методов (method-name),
- имена переменных экземпляров (inst-var-name),
- имена модулей (module-name),
- имена типов модулей (modtype-name).
Эти одиннадцать пространств имён различаются как контекстом, так и регистром идентификатора: является ли первая буква идентификатора строчной (ниже написано lowercase-ident) или заглавной (написано capitalized-ident). Подчёркивание считается строчной буквой для этой цели.
Именование объектов
|
См. также расширение языка: расширенные операторы индексирования.
Как показано выше, префиксные и инфиксные символы, а также некоторые ключевые слова могут использоваться в качестве имён значений, при условии, что они заключены в скобки. Правила регистров приведены в таблице ниже.
| Пространство имён | Регистр первой буквы |
| Значения | строчная |
| Конструкторы | заглавная |
| Метки | строчная |
| Теги полиморфных вариантов | заглавная |
| Исключения | заглавная |
| Конструкторы типов | строчная |
| Поля записей | строчная |
| Классы | строчная |
| Переменные экземпляров | строчная |
| Методы | строчная |
| Модули | заглавная |
| Типы модулей | любой |
Примечание по тегам полиморфных вариантов: текущая реализация принимает теги вариантов строчными буквами, помимо заглавных, но рекомендуется избегать тегов вариантов строчными буквами для обеспечения переносимости и совместимости с будущими версиями OCaml.
Ссылка на именованные объекты
|
Именованный объект может быть упомянут либо по его имени (в соответствии с обычными правилами статической области видимости для имён), либо с помощью пути доступа префикс . имя, где префикс обозначает модуль, а имя — имя объекта, определённого в этом модуле. Первый компонент пути, префикс, — это либо простое имя модуля, либо путь доступа имя1 . имя2 …, если определяющий модуль сам вложен в другие модули. Для ссылки на конструкторы типов, типы модулей или типы классов префикс также может содержать простые применения функторов (как в синтаксическом классе extended-module-path выше), в случае, если определяющий модуль является результатом применения функтора.
Имена меток, имена тегов, имена методов и имена переменных экземпляров не нуждаются в квалификации: первые три являются глобальными метками, в то время как последние локальны для класса.
© 1995-2022 INRIA.
https://v2.ocaml.org/releases/4.14/htmlman/names.html