1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/junruoyu-zheng-ligral

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
import.md 11 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 02:01 6be31cf

Цитата зависимостей

Структурированный крупный проект моделирования не может обойтись без использования цитат зависимостей, независимо от того, являются ли эти зависимости внутренними или внешними. В ligral вы можете легко управлять этими зависимостями и ссылаться на них в проекте моделирования. Все примеры, упомянутые в этой статье, можно найти в каталоге /examples/import-logic/.

Абсолютные пути

Самый простой случай — это когда все файлы lig находятся в одной папке. Ligral предоставляет два предложения для использования:

  • Метод 1:

    • import library1;
    • hello -> Print;
  • Метод 2:

    • using library1;
    • library1.hello -> Print;

Как следует из названия, import представляет собой импорт, который импортирует все члены (включая константы, узлы и отношения соединений и т. д.) файла library1.lig в текущее пространство имён. Using представляет использование (или ссылку), то есть использование пространства имён library для доступа к членам файла library1.lig.

Обратите внимание, что повторное импортирование или ссылка на один и тот же файл lig приведёт к тому, что файл будет загружен только один раз.

Файл main.lig в этом примере называется файлом входа, а каталог, в котором находится файл входа, является корневым каталогом проекта и является эталонным каталогом для абсолютных ссылок. То есть, если в этом каталоге есть подкаталоги, то при импорте или ссылке на файлы lig в подкаталогах необходимо указать путь относительно корневого каталога проекта. Например:

┬ 根目录
├──── main.lig
└───┬ subfolder:
    └──── sublib1.lig:
         ┌─────────────────────────────┐
         │let world = 1;               │
         └─────────────────────────────┘

В соответствии с требованиями, вы также можете использовать две грамматики для импорта или ссылки на этот файл, и переменные, на которые ссылается предложение using, должны быть полностью указаны по пути:

  • Метод 1:

    • import subfolder.sublib1;
    • world -> Print;
  • Метод 2:

    • using subfolder.sublib1;
    • subfolder.sublib1.world -> Print;

Относительные пути

Относительный путь относится к файлу, который не находится в корневом каталоге проекта, поскольку каталог файла и корневой каталог проекта не совпадают. Рассмотрим следующую структуру файла:

┬ 根目录
├──── 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 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/junruoyu-zheng-ligral.git
git@api.gitlife.ru:oschina-mirror/junruoyu-zheng-ligral.git
oschina-mirror
junruoyu-zheng-ligral
junruoyu-zheng-ligral
dev