빌트인
이 섹션에서는 이전 글에서 설명한 것보다 덜 기본적인 몇 가지 언어 구조에 대해 설명합니다. stdlib.fc](/develop/func/stdlib)에서 정의할 수도 있지만, 그러면 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인지 확인합니다. TVM 타입의
null값으로
Null` FunC는 일부 원자 타입의 값이 없음을 나타냅니다; null 값을 참조하세요. - 터치
및
~터치`는 변수를 스택의 맨 위로 이동합니다. - at`은 지정된 위치에서 튜플 컴포넌트의 값을 가져옵니다.