표준 라이브러리와 런타임

표준 라이브러리 개요

문자열·숫자·컬렉션·바이트·파일 작업에 맞는 표준 함수를 찾고, 값 없음과 오류를 처리하는 방법을 고릅니다.

텍스트를 숫자로 바꾸거나 파일을 읽는 등 하려는 작업에 맞는 표준 함수를 찾으세요. 컴파일러는 실행 전에 이름, 멤버, 인수 타입을 검사합니다.

예제를 실행하려면 첫 프로그램에서 토파즈를 설치하세요.

기능 선택하기

하려는 일먼저 볼 곳처리할 결과
텍스트 출력, 숫자 해석, 유니코드 확인코어 라이브러리값 또는 Option
배열 변환, 키 조회, 중복 제거컬렉션 연산컬렉션, bool, Option
바이트 조립, 검사합 계산, 데이터 압축코어 라이브러리바이트, 숫자, Result
파일 전체 읽기와 쓰기파일과 리소스FS가 반환하는 Result
파일을 연 채 여러 작업 수행파일과 리소스open의 Result, 이후 using이나 defer로 정리
숫자 출력, 컬렉션 순서, 실행 오류 확인런타임 동작값 또는 실행을 멈추는 오류

일상적인 조합

다음 코드를 overview.tpz로 저장하세요.

TOPAZ
let 해석값: Option<int> = toInt("42")
let 값들: Array<int> = Array.of(1, 2, 3)
let 두배 = map(값들, 값 => 값 * 2)

print("{해석값}:{두배}")

파일을 저장한 폴더에서 topaz run overview.tpz를 실행하세요.

출력
Some(42):[2, 4, 6]

toInt("42")는 Some(42)를 반환합니다. 입력을 "x"로 바꾸면 None이 나옵니다. 둘 다 Option 값이므로 호출한 코드에서 변환 실패를 처리할 수 있습니다. map은 배열의 각 값을 두 배로 만들고 순서를 유지합니다.

파일 읽기처럼 실패 원인을 반환하는 작업에는 Result를 씁니다. 실행 오류(fault)가 나면 실행을 멈춥니다. 잘못된 이름과 인수 타입은 검사 단계의 오류입니다. 각 결과를 처리하는 방법은 Null·Option·결과·fault에서 확인하세요.

이름과 import 찾기

print, toInt 같은 함수는 import 없이 사용합니다. Option을 만드는 Some, None과 Result를 만드는 Ok, Err도 마찬가지입니다.

네임스페이스는 관련 함수를 한 이름 아래 묶습니다. 예를 들어 Math.sqrt는 Math의 sqrt를 호출합니다. 다음 내장 네임스페이스는 import 없이 사용합니다.

하려는 일네임스페이스
순서 있는 항목 저장Array
키로 값 찾기Map
중복 없는 값 저장Set
데이터 형식 읽기와 쓰기JSON, CSV, TOML, URL
바이트 저장과 조립Bytes, ByteBuffer
데이터 인코딩과 압축Encoding, Codec
해시와 검사합 계산Hash
텍스트 패턴 찾기Regex
숫자 계산Math, BigInt, Decimal
달력 날짜 처리Date
파일 접근과 경로 구성FS, Path
명령줄 인수 해석Cli
테스트 프로필에서 단언 검사Test

패키지 코드에서는 제너레이터와 파서 도우미를 포함한 툴체인의 std.* 모듈도 가져올 수 있습니다. 같은 이름의 모듈을 가져오면 그 파일에서는 내장 네임스페이스를 가립니다. self 컴파일러와 Rust 참조 컴파일러는 같은 이름 탐색 규칙을 적용합니다.

정확한 경계

프로필은 프로그램이 사용할 수 있는 작업을 정합니다. 파일 등 호스트 작업은 토파즈를 실행하는 환경에서도 지원해야 합니다. 모듈을 가져와도 파일 시스템, 네트워크, 프로세스, 환경 변수, 시계, 데이터베이스 권한은 생기지 않습니다.

  • 문자열 위치는 유니코드 스칼라로 셉니다. 스칼라는 서로게이트 범위를 제외한 유니코드 코드 포인트 하나입니다. 바이트를 세는 API는 이를 명시합니다.
  • 컬렉션 순회와 스냅샷은 지정된 순서를 유지합니다.
  • 파싱과 디코딩은 선언된 Option 또는 Result를 반환합니다.
  • 잘못된 산술이나 유효하지 않은 배열 직접 접근은 실행 오류로 프로그램을 멈출 수 있습니다.
  • Test.*, 독립 함수 assert, std.test에는 테스트 프로필이 필요합니다.
  • 없는 이름, 모듈, 멤버는 검사 단계에서 거부합니다. 철자와 해당 타입의 API를 확인하세요.

작업별 다음 문서