Перейти к основному содержимому

Встроенные функции

warning

Эта страница переведена сообществом на русский язык, но нуждается в улучшениях. Если вы хотите принять участие в переводе свяжитесь с @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 получает значение компонента кортежа в указанной позиции