JavaScript, Python, Rust, 예전 토파즈 초안에서 본 듯한 문법을
topaz check가 거부할 때 이 페이지를 보세요. 익숙한 표기라고 해서
두 번째 방언으로 받아들이지는 않습니다. 대개는 뜻이 같은 현재 표기가
있으며, 대체 표기가 없다면 그 기능은 부분 지원되는 것이 아니라 사용할
수 없는 상태입니다.
현재 형식을 쓴 프로그램 검사하기
다음 코드를 forbidden-deferred.tpz로 저장하세요.
let mut count = 0
let values: Array<int> = [1, 2]
let transform: (int) -> int = value => value + 1
match values {
case [head, ..tail] => {
count = transform(head) + tail.length
}
case [] => {
count = 0
}
}
print("{count}")검사하고 실행합니다.
topaz check forbidden-deferred.tpz
topaz run forbidden-deferred.tpz
출력은 다음과 같습니다.
3이 프로그램 하나에서 현재 바인딩 순서, 이름 있는 컬렉션 타입, 호출 가능 타입, 람다, 리스트 나머지 패턴을 확인할 수 있습니다.
표기만 현재 형식으로 바꾸기
| 시도한 표기 | 대신 쓸 표기 |
|---|---|
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 소유권·수신자
토큰은 명시적인 상호 운용 자료에서만 다루며 일반 토파즈 문법이 아닙니다.
JavaScript식 레코드 펼침이나 Rust식 메서드 블록도 생성 대상 하나가
표현할 수 있다는 이유만으로 토파즈 표기가 되지 않습니다.
현재 표면을 빠르게 찾으려면 문법 한눈에 보기, 연산자 교정은 연산자와 표현식, 프로그램 구조는 모듈과 가시성을 보세요.