Встроенные функции
Эта страница переведена сообществом на русский язык, но нуждается в улучшениях. Если вы хотите принять участие в переводе свяжитесь с @alexgton.
В этом разделе описываются некоторые конструкции языка, которые менее фундаментальны, чем те, что описаны в предыдущих статьях. Их можно было бы определить в stdlib.fc, но это оставило бы меньше места для оптимизатора FunC.
Выброс исключений
Исключения могут быть выброшены с помощью условных примитивов throw_if
, throw_unless
и безусловного throw
. Первый аргумент — это код ошибки; второй — это условие (throw
имеет только один аргумент). Эти примитивы имеют параметризованные версии throw_arg_if
, throw_arg_unless
и throw_arg
. Первый аргумент — это параметр исключения любого типа; второ й — это код ошибки; третий — это условие (throw_arg
имеет только два аргумента).
Булевы значения
true
является псевдонимом для-1
false
является псевдонимом для0
Переменная дампа
Переменная может быть выгружена в журнал отладки с помощью функции ~dump
.
Строка дампа
Строка может быть выгружена в журнал отладки с помощью функции ~strdump
.
Операции с целыми числами
muldiv
— это операция умножения, а затем деления. Промежуточный результат сохраняется в 513-битном целом числе, поэтому он не будет переполне, если фактический результат поместится в 257-битное целое число.divmod
- это операция, которая принимает два числа в качестве параметров и возвращает частное и остаток от их деления.
Другие примитивы
null?
проверяет, является ли аргументnull
. По значениюnull
типа TVM,Null
FunC представляет отсутствие значения некоторого атомарного типа; смотрите значения null.touch
и~touch
перемещают переменную на вершину стекаat
получает значение компонента кортежа в указанной позиции