텍스트를 숫자로 바꾸거나 파일을 읽는 등 하려는 작업에 맞는 표준 함수를 찾으세요. 컴파일러는 실행 전에 이름, 멤버, 인수 타입을 검사합니다.
예제를 실행하려면 첫 프로그램에서 토파즈를 설치하세요.
기능 선택하기
| 하려는 일 | 먼저 볼 곳 | 처리할 결과 |
|---|---|---|
| 텍스트 출력, 숫자 해석, 유니코드 확인 | 코어 라이브러리 | 값 또는 Option |
| 배열 변환, 키 조회, 중복 제거 | 컬렉션 연산 | 컬렉션, bool, Option |
| 바이트 조립, 검사합 계산, 데이터 압축 | 코어 라이브러리 | 바이트, 숫자, Result |
| 파일 전체 읽기와 쓰기 | 파일과 리소스 | FS가 반환하는 Result |
| 파일을 연 채 여러 작업 수행 | 파일과 리소스 | open의 Result, 이후 using이나 defer로 정리 |
| 숫자 출력, 컬렉션 순서, 실행 오류 확인 | 런타임 동작 | 값 또는 실행을 멈추는 오류 |
일상적인 조합
다음 코드를 overview.tpz로 저장하세요.
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를 확인하세요.