scalabook

Форк
0
/
ca-given-imports.md 
46 строк · 2.4 Кб

Given imports

Для большей ясности, откуда берутся данные в текущей области видимости, для импорта экземпляров given

используется специальная форма оператора import
. Базовая форма показана в этом примере:

object A:
class TC
given tc: TC = ???
def f(using TC) = ???
object B:
import A.* // импорт всех non-given членов
import A.given // импорт given членов

В этом коде предложение import A.*

объекта B
импортирует все элементы A
, кроме given
экземпляра tc
. И наоборот, второй импорт, import A.given
, импортирует только экземпляр given
. Два предложения импорта также могут быть объединены в одно:

object B:
import A.{given, *}

Обсуждение

Селектор с подстановочным знаком *

помещает в область видимости все определения, кроме givens или расширений, тогда как селектор given
помещает в область видимости все givens, включая те, которые являются результатом расширений.

Эти правила имеют два основных преимущества:

  • понятнее, откуда берутся данные в текущей области видимости. В частности, невозможно скрыть импортированные givens в длинном списке других импортов.
  • есть возможность импортировать все given, не импортируя ничего другого. Это важно, потому что givens могут быть анонимными, поэтому обычное использование именованного импорта нецелесообразно.

Дополнительные примеры синтаксиса "import given" показаны в главе "Пакеты и импорт".


Ссылки:

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.