Есть ли что-то вроде is_int в FunC?
-
Некоторые языки программирования имеют встроенные функции, такие как
is_int()
, помогающие быстро проверить, имеет ли конкретная переменная тип integer или нет. Есть ли что-то подобное в FunC?
Этот вопрос был импортирован из чата Telegram: <***Скрыто***
click to show
-
К сожалению, у нас нет такой встроенной функции.
Однако вы можете создать свою собственную функцию для проверки того, является ли значение целым числом. Или вы можете воспользоваться ссылкой здесь, чтобы получить это.
forall X -> int is_null(X x) asm "ISNULL"; forall X -> int is_int(X x) asm "<{ TRY:<{ 0 PUSHINT ADD DROP -1 PUSHINT }>CATCH<{ 2DROP 0 PUSHINT }> }>CONT 1 1 CALLXARGS"; forall X -> int is_cell(X x) asm "<{ TRY:<{ CTOS DROP -1 PUSHINT }>CATCH<{ 2DROP 0 PUSHINT }> }>CONT 1 1 CALLXARGS"; forall X -> int is_slice(X x) asm "<{ TRY:<{ SBITS DROP -1 PUSHINT }>CATCH<{ 2DROP 0 PUSHINT }> }>CONT 1 1 CALLXARGS"; forall X -> int is_tuple(X x) asm "ISTUPLE";
Помните, что система типов FunC обычно делает ненужной проверку наличия определенного типа во время выполнения, поскольку ограничения типа уже "наложены на уровне компиляции".
Например, если функция предназначена для приема только целых чисел в качестве входных данных, компилятор применит это требование, и при передаче нецелого числа будет выдана ошибка.