kw fn
Зарезервированное слово
Список слов: §1.4
Синтаксис
Fn = [ "comptime" [ "literal" ] | "unsafe" ] "fn" Ident [ Generics ] "(" [ Params ] ")"
[ "->" Type ] [ Effects ] [ Where ] { Contract } ( Block | "=>" Expr ) ;IMember = "embed" Type | "type" Ident [ "=" Type ] | Receiver "fn" Sig [ "=>" Expr | Block ] ;ImplMember = { Attr } [ Vis ] ( Receiver ( "fn" | "op" ) Sig ( Block | "=>" Expr )
| "override" "fn" Sig ( Block | "=>" Expr ) | "open" "fn" Sig ( Block | "=>" Expr )
| "init" Sig ( Block | "=>" Expr ) | "dep" Ident ":" Type | Rpc | Const ) ;AtomType = Path [ "<" TypeArgs ">" ] | "(" [ Type { "," Type } ] ")" | "[" Type [ ";" Expr ] "]"
| "&" [ "var" ] Type | "*" [ "var" ] Type | ( "frozen" | "sync" | "view" | "dyn" ) Type
| "fn" "(" [ Type { "," Type } ] ")" [ "->" Type ] [ Effects ] [ "escaping" ] | "never" ;Грамматика: Прил. A
Определяется в
- 9.5 Пользовательские сериализаторы — Уровень 1 — представление через другой тип (Repr), действует во всех форматах и в схемах
- 2.4 Точки входа и порядок запуска — Программа — пакет, содержащий хотя бы одно из
- 4.5 impl и методы — Внутри метода доступны self и Self.
- 4.6 Интерфейсы — Интерфейсы структурные
- 4.3 Конструирование и конструкторы — Литерал. T{ f1: e1, f2, ..base }
- 4.7 Встраивание и переопределение — Наследования реализации нет.
- 4.8 Дженерики — Параметры: типовые T, константные const N
- 6.1 Объявление функции — Без -> T возвращаемый тип — () (для приватных функций с телом => e тип выводится из e).
Примеры
@repr(i64)
data Money { minor: i64 }
impl Repr<i64> for Money {
fn toRepr() -> i64 => minor
static fn fromRepr(v: i64) -> Money | DecodeError => Money{ minor: v }
}— 9.5 Пользовательские сериализаторы
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 // статическая проверкаСвязанные диагностики
schema-attr, bad-main, no-entry-point, impl-foreign-type, unknown-method, explicit-interface, interface-not-satisfied, bad-init, missing-field, must-close, positional-literal, sealed-literal, ambiguous-embed, missing-override