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

kw embed

Зарезервированное слово

Список слов: §1.4

Синтаксис

ebnf
Member      = Field | "embed" Type | "invariant" Expr ;
ebnf
IMember     = "embed" Type | "type" Ident [ "=" Type ] | Receiver "fn" Sig [ "=>" Expr | Block ] ;

Грамматика: Прил. A

Определяется в

Примеры

oxl
data Animal { name: str }
impl Animal {
  open fn speak() -> str => "..."
  fn hello() -> str => "I am {name}: {speak()}"
}

data Dog { embed Animal; breed: str }
impl Dog { override fn speak() -> str => "Woof, {super.speak()}" }

Dog{ name: "Rex", breed: "lab" }.hello()    // "I am Rex: Woof, ..."

— 4.7 Встраивание и переопределение

oxl
pub(api) interface Storage {
  fn get(k: str) -> bytes?  io
  var fn put(k: str, v: bytes)  io
  fn has(k: str) -> bool  io => get(k) != none     // метод по умолчанию
}

interface ReadWrite { embed Reader; embed Writer }
interface Container<T> { type Item = T; fn items() -> iter<T> }

@explicit interface Persistent { fn key() -> str }

assert FileStorage: Storage                      // статическая проверка

— 4.6 Интерфейсы

Связанные диагностики

ambiguous-embed, missing-override, override-without-open, explicit-interface, interface-not-satisfied

См. также