JavaScript, Python, Rust 또는 이전 토파즈 초안에서 접했을 법한 문법을 topaz check가 거부할 때 이 페이지를 참고하세요. 토파즈가 받는 정본 형식은 아래와 같습니다. 익숙한 표기 대부분에는 현재 대체 형식이 있으며, 나머지 기능군은 유예 목록에 정리되어 있습니다.
현재 형식을 쓴 프로그램 검사하기
다음 코드를 forbidden-deferred.tpz로 저장하세요.
let mut 개수 = 0
let 값들: Array<int> = [1, 2]
let 변환: (int) -> int = 값 => 값 + 1
match 값들 {
case [머리, ..꼬리] => {
개수 = 변환(머리) + 꼬리.length
}
case [] => {
개수 = 0
}
}
print("{개수}")검사를 수행한 뒤 실행합니다.
topaz check forbidden-deferred.tpz
topaz run forbidden-deferred.tpz출력은 다음과 같습니다.
3이 단일 프로그램으로 현재의 바인딩 순서·명명된 컬렉션 타입·호출 가능 타입·람다·리스트 rest 패턴을 한꺼번에 확인할 수 있습니다.
표기만 현재 형식으로 바꾸기
| 시도한 표기 | 대신 쓸 표기 |
|---|---|
mut let count = 0 | let mut count = 0 |
count++, count-- | count = count + 1, count = count - 1 |
타입 자리의 [T] | Array<T> |
타입 자리의 function(T) -> U | (T) -> U |
args: ...T | ...args: T |
[head, ...tail] | [head, ..tail] |
익명 function (...) { ... } | value => value + 1 같은 람다 |
백틱 또는 ${value} | 큰따옴표 문자열과 {value} 보간 |
문자열 인덱싱 또는 .length | text.scalars() 뒤에 Array 연산 |
async, await | 그 모델이 맞을 때 선언한 시간 한도를 쓰는 명시적 concurrent 실행 |
모듈 import와 export에는 별도의 정해진 형식이 있습니다. 모듈과 가시성의 선택적 import와 선언부 직전 export를 사용하세요. use, 문자열·템플릿 모듈 경로, export 목록, 와일드카드 export, 재공개, export 자리 식별자 변경은 사용할 수 없습니다.
위의 부적절한 표기는 유효한 토파즈 코드가 아니므로 일반 텍스트로만 제공합니다. 백엔드를 선택하기 전에 topaz check를 실행하세요. 공통 검사기가 언어 경계에서 이러한 표기를 거부하므로 생성 타깃이 의도를 자의적으로 해석하지 않습니다.
유예된 형식과 현재 대체 수단
거부된 형식 중 일부에는 현재 대체 수단이 있습니다. 다른 기능은 의미 구조가 현재 언어 명세 밖에 있어 유예되어 있습니다. 현재 코드는 문서화된 대체 수단을 사용하며, 나열된 기능군은 향후 언어 결정에서 다룹니다.
현재 사용할 수 없는 기능 범위에는 문자소 클러스터·문자열 직접 슬라이스·HTML 및 사용자 정의 템플릿 태그·더 넓거나 고차인 제네릭 제약·재귀 타입 별칭·넓은 프로토콜 디스패치·패키지 재공개·일반 iterable 전개·비동기 정리·async/await·실행 오류 포획·panic/throw/catch 키워드·선택적 속성 파이프 약식이 포함됩니다.
&self, &mut self, Vec<T>, use crate:: 같은 Rust 소유권 및 리시버 토큰은 표시된 상호 운용 명세에서 사용합니다. 표준 토파즈는 모듈 수준 impl Name, 내장 컬렉션 타입, 표준 임포트, 토파즈 레코드 갱신 형식을 사용합니다.
현재 표면 명세를 빠르게 파악하려면 문법 한눈에 보기를 보세요. 연산자 표기를 바로잡을 때는 연산자와 표현식을 보세요. 프로그램 구조는 모듈과 가시성에서 확인하세요.