데이터와 제어

파이프라인과 플레이스홀더

파이프라인으로 호출 결과를 다음 입력에 전달하고 자리표시자 _로 받을 인수 위치를 고르는 방법을 설명합니다.

|>로 함수 호출을 연결하고 각 결과가 다음 입력으로 전달되는 과정을 따라가 보세요. 자리표시자 _로 그 입력을 받을 인수 위치를 고를 수 있습니다.

첫 프로그램을 따라 토파즈를 설치하세요. 함수 선언과 호출은 값과 함수에서 익힐 수 있습니다.

세 호출을 따라 값 전달하기

작업 폴더에 다음 코드를 pipelines-placeholders.tpz로 저장하세요.

TOPAZ
function 더하기(값: int, 양: int) -> int {
    값 + 양
}

function 곱하기(왼쪽: int, 오른쪽: int) -> int {
    왼쪽 * 오른쪽
}

function 같음(왼쪽: int, 오른쪽: int) -> bool {
    왼쪽 == 오른쪽
}

let 결과 = 5
    |> 더하기(2)
    |> 곱하기(_, 3)
let 반복비교 = 결과 |> 같음(_, _)

print("{결과} {반복비교}")

같은 폴더에서 파일을 검사하고 실행하세요.

BASH
topaz check pipelines-placeholders.tpz
topaz run pipelines-placeholders.tpz

검사는 종료 코드 0으로 성공합니다. 실행하면 다음 결과를 출력합니다.

출력
21 true

결과 따라가기

단계값을 전달한 호출결과
5 |> 더하기(2)더하기(5, 2)7
7 |> 곱하기(_, 3)곱하기(7, 3)21
21 |> 같음(_, _)같음(21, 21)true

파이프라인은 왼쪽부터 실행합니다. 각 단계는 오른쪽을 계산하기 전에 왼쪽을 한 번 계산합니다. 같음(_, _)의 두 자리표시자는 이렇게 저장한 같은 값을 받습니다.

입력을 받을 위치 고르기

오른쪽 형태토파즈가 하는 일
value |> call(other)value를 첫 인수로 삽입
value |> call(_, other)각 유효한 _를 value로 교체
value |> callable함수 값에 인수 value를 전달해 호출
value |> .fieldvalue의 field 읽기

자리표시자가 없으면 위치 인수·펼침 인수·이름 지정 인수보다 앞에 값을 넣습니다. 자리표시자가 있으면 그 자리를 바꾸며 첫 인수를 추가로 넣지 않습니다.

자리표시자는 자신을 감싼 가장 가까운 호출에 속합니다. 여러 자리표시자가 저장한 입력값을 함께 받을 수 있습니다. 패턴의 _는 이름을 붙이지 않고 값을 받습니다.

인수 위치 고치기

pipelines-placeholders.tpz의 곱하기(_, 3)에서 _를 빼면 곱하기(3)입니다. 파이프라인이 이전 결과를 첫 인수로 넣으므로 결과는 여전히 21입니다. 그 자리에 곱하기(7, 3)을 쓰면 삽입 후 인수가 세 개가 되어 검사에 실패합니다.

_는 값을 받을 호출의 인수 목록 안에 두세요. 오른쪽 전체를 _로 쓰거나 호출할 함수·멤버·필드의 이름 자리에 쓸 수 없습니다.

이름 지정 인수는 위치 인수와 펼침 인수 뒤에 둡니다. 오른쪽이 호출·함수 값·.field 중 어느 것도 아니면 정적 오류가 납니다.

선택적 필드 접근은 파이프라인 앞이나 람다 안에서 일반 선택적 체이닝으로 처리하세요. value |> ?.field는 지원하지 않습니다.

오류와 동시 작업 처리하기

Result 전파에는 후위 ?를 쓰고, 동시 작업에는 시간 제한을 선언한 concurrent를 쓰세요. 파이프라인이 오류를 자동 전파하거나 일부 인수를 고정한 함수를 만들거나 비동기 작업을 시작하지는 않습니다. 사용자 정의 파이프 연산자도 지원하지 않습니다.

우선순위는 연산자와 표현식, 함수 값은 함수와 제네릭을 참고하세요. 컬렉션을 만드는 단계는 컬렉션과 컴프리헨션에서 설명합니다.