Типы
Эта страница переведена сообществом на русский язык, но нужд ается в улучшениях. Если вы хотите принять участие в переводе свяжитесь с @alexgton.
Документация по FunC была изначально написана @akifoq.
FunC имеет следующие встроенные типы.
Атомарные типы
int— тип 257-битных знаковых целых чисел. По умолчанию проверки переполнения включены и приводят к исключениям переполнения целых чисел.cell— тип ячеек TVM. Все постоянные данные в блокчейне TON хранятся в деревьях ячеек. Каждая ячейка имеет до 1023 бит произвольных данных и до четырех ссылок на другие ячейки. Ячейки служат памятью в стековых TVM.slice— тип срезов ячеек. Ячейку можно преобразовать в срез, а затем биты данных и ссылки на другие ячейки из ячейки можно получить, загрузив их из среза.builder— тип построителей ячеек. Биты данных и ссылки на другие ячейки могут храниться в конструкторе, а затем конструктор может быть завершен для новой ячейки.tuple- тип кортежей TVM. Кортеж - это упорядоченная коллекция, содержащая до 255 компонентов с произвольными типами значений, которые могут отличаться друг от друга.cont- тип продолжений TVM. Продолжения используются для управления ходом выполнения программы TVM. С точки зрения функциональности, это объект довольно низкого уровня, хотя, как это ни парадоксально, довольно общий.
Обратите внимание, что любой из типов выше занимает только одну запись в стеке TVM.
Отсутствие логического типа
В FunC логические значения представлены как целые числа; false представлено как 0, а true п редставлено как -1 (257 единиц в двоичной записи). Логические операции выполняются как побитовые операции. При проверке условия каждое ненулевое целое число считается значением true.
Нулевые значения
Значением null типа TVM Null FunC представляет отсутствие значения некоторого атомарного типа. Некоторые примитивы из стандартной библиотеки могут быть типизированы как возвращающие атомарный тип и фактически возвращающие null в некоторых случаях. Другие могут быть типизированы как исключающие значение атомарного типа, но также прекрасно работать со значениями null. Такое поведение явно указано в спецификации примитива. По умолчанию значения null запрещены и приводят к исключению во время выполнения.
Таким образом, атомарный тип A может быть неявно преобразован в тип A^?, также известный как Maybe A (проверка типов не зависит от такого преобразования).