Цитата зависимостей
Структурированный крупный проект моделирования не может обойтись без использования цитат зависимостей, независимо от того, являются ли эти зависимости внутренними или внешними. В ligral вы можете легко управлять этими зависимостями и ссылаться на них в проекте моделирования. Все примеры, упомянутые в этой статье, можно найти в каталоге /examples/import-logic/.
Абсолютные пути
Самый простой случай — это когда все файлы lig находятся в одной папке. Ligral предоставляет два предложения для использования:
Метод 1:
Метод 2:
Как следует из названия, import представляет собой импорт, который импортирует все члены (включая константы, узлы и отношения соединений и т. д.) файла library1.lig в текущее пространство имён. Using представляет использование (или ссылку), то есть использование пространства имён library для доступа к членам файла library1.lig.
Обратите внимание, что повторное импортирование или ссылка на один и тот же файл lig приведёт к тому, что файл будет загружен только один раз.
Файл main.lig в этом примере называется файлом входа, а каталог, в котором находится файл входа, является корневым каталогом проекта и является эталонным каталогом для абсолютных ссылок. То есть, если в этом каталоге есть подкаталоги, то при импорте или ссылке на файлы lig в подкаталогах необходимо указать путь относительно корневого каталога проекта. Например:
┬ 根目录
├──── main.lig
└───┬ subfolder:
└──── sublib1.lig:
┌─────────────────────────────┐
│let world = 1; │
└─────────────────────────────┘
В соответствии с требованиями, вы также можете использовать две грамматики для импорта или ссылки на этот файл, и переменные, на которые ссылается предложение using, должны быть полностью указаны по пути:
Метод 1:
Метод 2:
Относительные пути
Относительный путь относится к файлу, который не находится в корневом каталоге проекта, поскольку каталог файла и корневой каталог проекта не совпадают. Рассмотрим следующую структуру файла:
┬ 根目录
├──── main.lig
└───┬ subfolder:
├──── sublib1.lig
└──── sublib2.lig:
┌─────────────────────────────┐
│let world = 2; │
└─────────────────────────────┘
Если вы хотите использовать world в файле sublib1.lig, используя предложение в качестве примера, существует два способа абсолютной и относительной ссылки. Абсолютная ссылка выглядит следующим образом:
using subfolder.sublib2;
subfolder.sublib2.world -> Print;
Предпосылкой для этого предложения является то, что файл входа — main.lig. Если файл входа изменится, это предложение не сможет нормально выполняться, поэтому ligral предоставляет способ относительной ссылки:
using .sublib2;
sublib2.world -> Print;
Знак точки перед sublib2 указывает на поиск файла sublib2.lig в каталоге, где находится файл sublib1.lig. Если в этом каталоге всё ещё есть подкаталог subsubfolder, вы, естественно, можете написать его как .subsubfolder.file.
Если вам нужно получить доступ к каталогу верхнего уровня, просто добавьте точку перед точкой, то есть если есть две точки, это означает поиск в каталоге верхнего уровня, если есть три точки, это означает поиск в двух каталогах верхнего уровня. Однако обычно рекомендуется не превышать один уровень для поиска между уровнями. Например, следующая структура файла:
┬ 根目录
├──── main.lig
├───┬ subfolder:
│ └──── sublib1.lig
└───┬ package:
└──── module1.lig:
┌─────────────────────────────┐
│let ligral = 1; │
└─────────────────────────────┘
Если файл sublib1.lig должен ссылаться на world, одним из способов является использование абсолютного пути для доступа, который требует, чтобы файл main.lig был файлом входа:
using package.module1;
package.module1.ligral -> Print;
Используя относительную ссылку, вы можете написать:
using ..package.module1;
package.module1.ligral -> Print;
Вы можете видеть, что два знака точки перед именем модуля опущены, и нет необходимости писать имя папки верхнего уровня. Если вы используете предложение import, такой проблемы не возникнет.
Пакеты
Предыдущие ситуации относятся к файловым ссылкам. Если пакет файлов цитируется, пакет должен быть пакетом. Необходимым и достаточным условием для того, чтобы стать пакетом, является наличие файла index.lig в папке пакета, и цитирование папки пакета эквивалентно цитированию файла index.lig. Например, следующая структура файла:
┬ 根目录
├──── main.lig
└───┬ package:
├──── index.lig:
│ ┌─────────────────────────────┐
│ │using .module1; │
│ └─────────────────────────────┘
└──── module1.lig:
┌─────────────────────────────┐
│let ligral = 1; │
└─────────────────────────────┘
Если вы цитируете пакет в main.lig:
import package;
вы увидите все содержимое файла index.lig в текущем пространстве имён. И файл index.lig содержит идентификатор module1, поэтому, если вам нужно использовать ligral, вы должны написать:
module1.ligral -> Print;
Следует отметить, что в файле index.lig вы можете выбрать использование using или import в соответствии с вашими фактическими потребностями. Если в приведённом выше примере файл index.lig использует import .module1;, то вы можете напрямую вызвать ligral в main.lig.
Выбор импорта
Иногда некоторые пакеты или файлы lig могут содержать много членов, но в действительности при использовании могут потребоваться только некоторые из членов. В этом случае вы можете избежать загрязнения пространства имён, используя предложение using. Но если вы не хотите вызывать объекты через пространство имён, вы можете использовать синтаксис выборочного импорта предложения import.
┬ 根目录
├──── main.lig
└───┬ subfolder:
└──── sublib4.lig:
┌─────────────────────────────┐
│let world = 4; │
│let unused = 0; │
└─────────────────────────────┘
Если вы просто хотите использовать член мира, вы можете написать следующее:
import subfolder.sublib4 : world;
world -> Print;
В этом случае только мир импортируется в текущее пространство имён, а неиспользуемый не импортируется и, следовательно, не может быть доступен. Если вам нужно импортировать несколько членов, вы можете разделить их запятыми.
Псевдонимы
...
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )