여러 개의 대상(Multiple subjects)
때때로 하나의 `case` 표현식에서 여러 값을 동시에 패턴 매칭하는 것이 유용할 때가 있습니다.
이를 위해 여러 개의 대상(subjects)과 여러 개의 패턴을 각각 쉼표로 구분하여 사용할 수 있습니다.
여러 대상을 매칭할 때는 대상의 개수와 패턴의 개수가 같아야 합니다.
패턴 중 하나의 `_` 부분을 제거해보면 컴파일 시점에서 어떤 오류가 나는지 확인할 수 있습니다.
```rust
import gleam/int
pub fn main() {
let x = int.random(2)
let y = int.random(2)
echo x
echo y
let result = case x, y {
0, 0 -> "둘 다 0입니다"
0, _ -> "첫 번째만 0입니다"
_, 0 -> "두 번째만 0입니다"
_, _ -> "둘 다 0이 아닙니다"
}
echo result
}
```

대체 패턴(Alternative patterns)
case 절에서 `|` 연산자를 사용하여 여러 개의 대체 패턴을 지정할 수 있습니다.
여러 패턴 중 하나라도 매칭되면 그 절이 실행됩니다.
만약 어떤 패턴에서 변수(아래 예시코드의 `result`)를 정의한다면, 해당 절의 모든 대체 패턴에서도 동일한 이름과 동일한 타입의 변수를 정의해야 합니다.
현재는 중첩된(nested) 대체 패턴은 사용할 수 없으므로 `[1 | 2 | 3]` 같은 패턴은 유효하지 않습니다.
```rust
import gleam/int
pub fn main() {
let number = int.random(10)
echo number
let result = case number {
2 | 4 | 6 | 8 -> "이것은 짝수입니다"
1 | 3 | 5 | 7 -> "이것은 홀수입니다"
_ -> "이것은 잘 모르겠습니다"
}
echo result
}
```
문서 출처: Gleam 공식 문서 “Documentation / Installing Gleam”, https://gleam.run/documentation/
라이선스: Apache License, Version 2.0 (https://github.com/gleam-lang/gleam)
'Programming Languages > Gleam' 카테고리의 다른 글
| [Gleam 언어 강좌] Tuples, Custom Types (0) | 2025.10.07 |
|---|---|
| [Gleam 언어 강좌] Pattern aliases, Guards (0) | 2025.10.06 |
| [Gleam 언어 강좌] Recursion, Tail calls, List recursion (0) | 2025.10.04 |
| [Gleam 언어 강좌] Case, variable/string/list pattern (0) | 2025.10.03 |
| [Gleam 언어 강좌] label, doc comments, deprecation (0) | 2025.10.02 |