v5 이전 토파즈 소스를 직접 고쳐 현재 문법으로 옮기세요. 기존 동작을 보존하고 변경할 때마다 결과를 비교하세요.
토파즈를 설치하고 원본 소스, 입력, 출력의 사본을 보관하세요. 호환성을 유지하는 제품 업데이트에는 별도의 소스 이전이 필요하지 않습니다.
파일 하나 옮기기
다음 예전 코드는 구형 선언 문법과 배열 타입 표기를 사용합니다.
mut let 이름들: [string] = ["Ada"]
let 첫값 = 이름들[0]아래 현재 문법으로 고친 코드를 작업 폴더의 from-pre-v5.tpz에 저장하세요.
let mut 이름들: Array<string> = ["Ada"]
let 첫값: Option<string> = 이름들.get(0)
print("{첫값}")그 폴더에서 다음 명령을 실행하세요.
topaz check from-pre-v5.tpz
topaz run from-pre-v5.tpz검사는 종료 코드 0으로 끝납니다. 실행은 종료 코드 0으로 끝나며 다음 결과를 출력합니다.
Some(Ada)이름들.get(0)은 Option<string>을 반환합니다. 첫 원소가 있으므로 결과는 Some(Ada)입니다. 배열 범위를 벗어난 인덱스는 None을 반환합니다. 배열의 직접 인덱싱도 지원하며, 범위를 벗어나면 실행 오류가 납니다. 프로그램에 필요한 동작을 선택하세요.
예전 코드를 문서에 실을 때는 text 블록을 쓰세요. 현재 문법에는 topaz 블록을 사용하세요.
프로젝트를 고치기 전에 동작 기록하기
진입 파일, 모듈 루트, 입력, 예상 출력, 실행 오류, 파일·네트워크 작업을 기록하세요. 비교할 수 있도록 실행 결과도 보관하세요. Rust·JavaScript·프레임워크 문법으로 쓴 예제는 토파즈 소스와 구분하세요.
소스와 패키지 메타데이터를 현재 언어 모드에 맞게 고치세요. 패키지 설정은 패키지와 배포를 참고하세요. 과거 문법은 클래식에서, 지금 쓸 표기는 현재 매뉴얼에서 확인하세요.
자주 나오는 표기 바꾸기
| 예전 표기 | 현재 표기 | 보존할 내용 |
|---|---|---|
mut let x | let mut x | 바인딩의 재대입 가능 여부 |
[T] | Array<T> | 원소 타입 |
function(T) -> U | (T) -> U | 매개변수와 반환 타입 |
[head, ...tail] | [head, ..tail] | 리스트 패턴의 나머지 원소 |
args: ...T | ...args: T | 가변 인수의 타입 |
익명 function | (x: T) => expr | 매개변수, 결과, 캡처한 바인딩 |
s[i], s.length | s.scalars()와 명시적 문자열 API | 유니코드 스칼라 위치와 개수 |
백틱, ${expr} | 큰따옴표, {expr} | 문자열 내용과 보간 |
유니코드 스칼라는 유니코드 값 하나이며 바이트나 눈에 보이는 글자와 단위가 다를 수 있습니다. 인덱싱과 등록한 템플릿 태그는 문자열과 템플릿을 참고하세요. self는 현재 메서드 선언이 허용하는 위치에서 사용하세요.
복구할 수 있는 실패에는 Result를, 값이 없을 수 있을 때는 Option이나 null을 포함한 타입을 쓰세요. 실행 오류와 반환하는 오류 값을 구분하세요. 정리 작업은 defer나 지원하는 using 구문으로 옮기세요. import, export, 가시성, 초기화는 모듈과 가시성에 맞게 고치세요.
외부 언어 코드는 언어를 명시한 빌드·변환 단계에 두세요. 토파즈 모듈에 토파즈 문법처럼 붙여 넣을 수 없습니다.
고친 프로그램의 결과 비교하기
고친 소스에 topaz check를 실행한 뒤 프로젝트 테스트를 실행하세요. 위 파일은 출력이 Some(Ada)인지 비교하세요. 프로젝트에서는 기록한 입력과 결과를 비교하세요.
모듈 초기화, 순회 순서, 유니코드 스칼라 위치, 수식 계산 오류, 정리 작업, 허용한 호스트 작업을 확인하세요. 진단이 나오면 연결한 현재 문법을 참고해 소스 위치를 고치세요. 검사를 통과해도 출력이 다르면 같은 입력으로 바뀐 로직을 살펴보세요.
산출물과 배포를 따라 배포할 네이티브·Web·Worker 환경에 맞게 빌드하세요. 지원하지 않는 표기는 결과물 생성 전에 진단으로 알려야 합니다. 검사·테스트가 통과하고 선택한 각 빌드가 예상대로 동작하면 이전을 마칩니다.