토파즈 배우기

실제 파일 읽기

토파즈 파일에서 입력·결과·실패 경로를 찾고 궁금한 동작을 담당하는 함수를 읽습니다.

토파즈 파일에서 입력과 결과, 실패 경로를 찾아보세요. 학습 계획의 코드를 읽으며 잘못된 시간이 어디서 과제 생성을 멈추는지 따라갑니다.

첫 애플리케이션을 먼저 마치세요. 그 프로젝트의 src/main.tpz와 src/plan.tpz를 열어 두세요. 프로젝트 이름을 바꿨다면 source-unavailable 안에 있습니다.

가져오는 코드 찾기

import를 보면 이 파일이 쓰는 이름을 어느 모듈에서 가져오는지 알 수 있습니다. 다음은 표준 라이브러리 모듈을 가져오는 예입니다.

TOPAZ
import std.bytes { Bytes }
import std.json

학습 계획의 import src.plan은 src/plan.tpz를 가리킵니다. 과제만들기나 요약의 동작을 따라가려면 그 파일을 여세요.

print처럼 가져오기 없이 쓰는 내장 함수도 살펴보세요. 파일 접근을 파악하려면 실제 호출과 패키지 권한을 확인해야 합니다. 사용할 연산과 실행 규칙을 정하는 실행 프로필도 함께 봅니다. 가져오기 목록만으로 모든 입출력을 알 수는 없습니다.

데이터 찾기

다음 짧은 예제는 학습 세션의 데이터를 묶고 텍스트로 바꿉니다.

TOPAZ
record 학습세션 {
    주제: string,
    분: int,
    완료: bool
}

function 요약(세션: 학습세션) -> string {
    if 세션.완료 {
        return "{세션.주제}: done"
    }
    "{세션.주제}: {세션.분} minutes left"
}

학습세션은 주제, 소요 시간, 완료 여부를 저장합니다. 먼저 이 필드들을 읽으세요. 이어서 세션.완료에 따라 요약이 어느 텍스트를 반환하는지 봅니다.

주제가 "Read", 시간이 25분, 완료가 false이면 결과는 "Read: 25 minutes left"입니다. 완료가 true이면 "Read: done"입니다.

함수의 입력과 결과 읽기

function 요약(세션: 학습세션) -> string 부분을 함수 서명이라고 부릅니다. 함수 이름과 매개변수, 반환 타입을 적은 부분입니다.

여기서 요약은 학습세션을 받아 문자열을 반환합니다. 학습 계획의 과제만들기는 Result<학습과제, string>을 반환합니다. 호출한 코드는 Ok로 과제를, Err로 오류 메시지를 받을 수 있습니다.

서명에서 필요한 함수를 찾은 뒤 그 함수의 본문을 읽으세요. 파일 등 입출력 작업을 찾을 때는 실제 호출과 실행 프로필도 확인합니다.

잘못된 입력 따라가기

src/plan.tpz의 과제만들기에서 분해석(분문자열)?를 찾으세요. ?는 Ok에서 값을 꺼냅니다. Err이면 과제만들기에서 즉시 그 오류를 반환합니다.

이제 "later"를 따라가 보세요. toInt가 정수로 바꿀 수 없으므로 분해석은 Err("minutes must be a positive integer")를 반환합니다. ?는 과제를 만들기 전에 이 오류를 호출한 쪽으로 돌려보냅니다. tests/plan.tpz는 그 메시지를 검사합니다.

src/main.tpz에서 이 입력을 고치려면 "25"처럼 양의 정수 문자열로 바꾸세요. 이렇게 반환하는 오류와 실행 오류를 구분하세요. 배열 범위를 벗어난 접근 같은 실행 오류는 실행을 멈춥니다.

직접 해보기

위의 요약 예제를 읽어 보세요. 반환값을 받은 코드가 타입만 보고 세션 완료 여부를 알 수 있을까요?

정답

알 수 없습니다. 두 분기 모두 string을 반환합니다. 완료 여부는 텍스트에 나타나지만 타입에는 없습니다. 다른 함수에도 완료 여부가 필요하다면 그 값을 담은 레코드를 전달해 필드로 읽게 하세요.

다음 단계로 넘어갈 준비

학습 계획에서 src/plan.tpz를 가리키는 가져오기와 "later"를 거절하는 함수를 찾으세요. 그 오류가 과제만들기로 돌아가는 과정을 따라가고, 오류를 확인하는 테스트도 찾아보세요.

자세한 규칙은 레코드와 명목 데이터, 함수와 제네릭, Null·Option·결과·fault에서 확인하세요. 낯선 구문은 문법 한눈에 보기에서 찾을 수 있습니다.