РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
31 of 723 menu

Ключевое слово export

Ключевое слово export позволяет одной библиотеке предоставлять содержимое другой библиотеки как своё собственное. Это значит, что тот, кто импортирует вашу библиотеку, автоматически получит доступ ко всем публичным сущностям экспортируемой библиотеки, как если бы они были объявлены внутри вашей. После ключевого слова указывается путь к библиотеке, которую нужно реэкспортировать. Дополнительно можно использовать комбинаторы show и hide, чтобы ограничить список экспортируемых имён, а также ключевое слово as для создания префикса.

В отличие от import, который подключает библиотеку в текущий файл для использования, export не даёт текущей библиотеке прямого доступа к именам. Он лишь сообщает Dart, какие сущности должны быть видны тем, кто импортирует текущую библиотеку.

Синтаксис

export 'path/to/library.dart'; export 'path/to/library.dart' show name1, name2; export 'path/to/library.dart' hide name1, name2; export 'path/to/library.dart' as prefix;

Пример

Предположим, у нас есть файл math_utils.dart с полезными функциями:

// math_utils.dart int sum(int a, int b) { return a + b; } int multiply(int a, int b) { return a * b; }

Теперь создадим библиотеку utils.dart, которая реэкспортирует содержимое math_utils.dart:

// utils.dart export 'math_utils.dart';

Теперь любой файл, импортирующий utils.dart, получит доступ к функциям sum и multiply:

// main.dart import 'utils.dart'; void main() { print(sum(2, 3)); print(multiply(2, 3)); }

Результат выполнения кода:

5 6

Пример

Давайте ограничим экспорт только функцией sum с помощью комбинатора show:

// utils.dart export 'math_utils.dart' show sum;

Теперь функция multiply не будет доступна через utils.dart. Попробуем её вызвать:

// main.dart import 'utils.dart'; void main() { print(sum(2, 3)); print(multiply(2, 3)); }

Такой код вызовет ошибку компиляции, потому что имя multiply не экспортируется из utils.dart.

Пример

А теперь используем комбинатор hide, чтобы скрыть функцию multiply и оставить всё остальное:

// utils.dart export 'math_utils.dart' hide multiply; // main.dart import 'utils.dart'; void main() { print(sum(2, 3)); }

Результат выполнения кода:

5

Пример

Если нужно экспортировать библиотеку под префиксом, используется ключевое слово as. Это удобно, когда несколько библиотек содержат одинаковые имена:

// utils.dart export 'math_utils.dart' as math; // main.dart import 'utils.dart'; void main() { print(math.sum(2, 3)); print(math.multiply(2, 3)); }

Результат выполнения кода:

5 6

Смотрите также

  • ключевое слово import,
    которое подключает библиотеку в текущий файл
  • ключевое слово library,
    которое объявляет библиотеку с именем
  • ключевое слово show,
    которое ограничивает импорт или экспорт списком имён
  • ключевое слово hide,
    которое исключает имена из импорта или экспорта
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить