11.3 Имена
Идентификаторы используются для присвоения имён нескольким классам языковых объектов и для ссылки на эти объекты по имени позже:
- имена значений (синтаксический класс value-name),
- конструкторы значений и конструкторы исключений (класс constr-name),
- метки (label-name, определены в разделе 11.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/5.0/htmlman/names.html