OxL Справочник OxL
РусскийEnglish

12.7 Зависимости

oxl
provide Db = Db.open(App.get().dbUrl)          for role api, saga
provide Payments = PaymentsClient.new(App.get().stripeKey)

impl Orders { dep db: Db; dep pay: Payments }
  • provide Тип = выражение (for role r, …)? — фабрика зависимости, выполняется один раз на узле при запуске (шаг 4 §2.4) для указанных ролей (по умолчанию — для всех).
  • dep имя: Тип допустим в impl сервиса, акторе, пайплайне, саге и на уровне модуля. Зависимость уровня модуля доступна всем функциям модуля как неизменяемое значение.

Определяется реализацией. Модульный dep (D-8055; DIV-017; D-5101). Эта реализация связывает модульный dep только в сагах и пайплайнах модуля; в main и в обычных функциях он не доступен. Остальные места dep (impl сервиса, актор) — как в Стандарте.

  • Если код, использующий dep, может выполниться на роли без соответствующего provide, — ошибка компиляции. Тест МОЖЕТ переопределить provide (§18).

duplicate-provide, missing-provide, unknown-role

См. также

Исходник: docs/spec/oxl-standard.md