본문으로 건너뛰기

빌트인

이 섹션에서는 이전 글에서 설명한 것보다 덜 기본적인 몇 가지 언어 구조에 대해 설명합니다. stdlib.fc](/develop/func/stdlib)에서 정의할 수도 있지만, 그러면 FunC 옵티마이저를 위한 공간이 줄어들게 됩니다.

예외 던지기

조건부 프리미티브 throw_if, throw_unless와 무조건 throw를 통해 예외를 던질 수 있습니다. 첫 번째 인자는 오류 코드이고, 두 번째 인자는 조건입니다(throw에는 인자가 하나만 있습니다). 이러한 프리미티브에는 매개변수화된 버전인 throw_arg_if, throw_arg_unless, throw_arg가 있습니다. 첫 번째 인자는 모든 유형의 예외 매개변수이고, 두 번째는 오류 코드이며, 세 번째는 조건입니다(throw_arg에는 인자가 두 개만 있습니다).

부울

  • true-1`의 별칭입니다.
  • false0`의 별칭입니다.

변수 덤프

변수는 ~dump 함수를 사용하여 디버그 로그에 덤프할 수 있습니다.

문자열 덤프

문자열은 ~strdump 함수를 사용하여 디버그 로그에 덤프할 수 있습니다.

정수 연산

  • muldiv`는 곱셈 후 나눗셈 연산입니다. 중간 결과는 513비트 정수로 저장되므로 실제 결과가 257비트 정수에 맞으면 오버플로되지 않습니다.
  • 'divmod'는 두 숫자를 매개변수로 받아 나눗셈의 몫과 나머지를 구하는 연산입니다.

기타 기본 요소

  • null?은 인자가 null인지 확인합니다. TVM 타입의 null값으로Null` FunC는 일부 원자 타입의 값이 없음을 나타냅니다; null 값을 참조하세요.
  • 터치~터치`는 변수를 스택의 맨 위로 이동합니다.
  • at`은 지정된 위치에서 튜플 컴포넌트의 값을 가져옵니다.