와일드 카드 패턴?
- 값을 해체(추출)하거나, 무시하는 패턴
- 와일드 카드 식별자가 위치한 곳의 값은 무시해라 라는 뜻..?
- for, switch 구문에서 많이 사용됨
→ 함수의 이름이 명확한 경우엔 괜찮지만 복잡한 기능을 담당하는 함수에선 과도한 생략이 가독성을 해치는 결과를 초래할 수 있으니 적절히 사용
// 매개변수에 와일드 카드를 사용하지 않고 함수를 만들었을 때
func todayMenu(menu: String) {
print("오늘의 메뉴는 \(menu)입니다.")
}
todayMenu(menu: "피자")
// 매개변수에 와일드 카드를 사용해서 함수를 만들었을 때
func todayMenu(_ menu: String) {
print("오늘의 메뉴는 \(menu)입니다.")
}
todayMenu("피자")
// 예시 1
let string: String = "ABC"
switch string {
case _:
print(string)
}
// 예시 2
let optionalString: String? = "ABC"
switch optionalString {
case "ABC"?:
print(optionalString) // optional("ABC")가 출력
case _?: // ABC빼고 나머지 값들
print("이값은 ABC가 아닙니다.")
case nil: // 값이 아예 없을때
print("nil이니깐 값이 없습니다.")
}
// 예시 3
// 와일드 카드가 존재하는 값은 무시하고, 와일드카드가 없는 실존 값만 비교
let hoon = ("HOON",28,"male")
switch hoon {
case("HOON", _, _):
print("It's HOON") // 출력
case(_, _, _):
print("아무나")
}
for _ in 0..<3 {
print("hello")
}
/*
hello
hello
hello
*/
→ for문은 와일드 카드 식별자를 사용하면 해당 변수를 쓰지않고 범위 지정자를 통해 지정해준 범위만큼 for문이 돈다고 생각하면 됩니다.
참고: https://dvlpr-chan.tistory.com/21