suvera-dev 🥦

Swift ) 기초 문법 4일차 - For 반복문 & Wildcard Pattern 본문

Language/Swift

Swift ) 기초 문법 4일차 - For 반복문 & Wildcard Pattern

suvera 2022. 2. 7. 05:43

4일차 - for 반복문 

for index in 0...5 {
    print("호호 index: \(index)")
}

for index in 0..<5 {
    print("호호 index: \(index)")
}

for index in 0..<5 where index % 2 == 0 {
    print("호호 짝수 index: \(index)")
}

//var randomInts: [Int] = []
var randomInts: [Int] = [Int]()

for _ in 0..<25 {
    let randomNumber = Int.random(in: 0...100)
    randomInts.append(randomNumber)
}

print("randomInts: \(randomInts)")

값은 필요없고 반복만 시키고 싶을 땐 _ ( 와일드카드 패턴 )사용 

 

🌀 와일드카드 패턴이란?

- 값을 해체하거나 무시하는 패턴중 하나입니다.

- 매개변수에서 많이 사용했던 와일드카드 식별( _ )을 사용한다는것은 이 자리에 올것이 무엇이든 상관하지 말라는 뜻입니다.

- 와일드카드 식별자가 위치한 곳의 값은 무시하라는 의미 

- 이 패턴은 for구문이나, switch구문에 많이 사용됩니다.

 

let string: String = "ABC"

switch string {
case _: print(string)   // ABC -> 어떤 값이 와도 상관없기에 항상 실행됩니다.
}

let optionalString: String? = "ABC"

switch optionalString {
case "ABC"?: print(optionalString)  // optionalString이 Optional("ABC")일 때만 실행됩니다.
case _?: print("Has value, but not ABC") // optionalString이 Optional("ABC") 외의 값이 있을 때만 실행됩니다.
case nil: print("nil")  // 값이 없을 때 실행됩니다.
}  // Optional(“ABC”)

let abc = ("ABC", 3, "English")

switch abc {
case ("ABC", _, _): print("ABC")   // 첫 번째 요소가 "ABC"일 때만 실행됩니다.
case (_, _, _): print("아무거나") // 그 외 언제든지 실행됩니다.
}

 

와일드 카드 패턴이 적용된 함수 예제 

func todayMenu(menu: String) {
	print("오늘의 메뉴는 \(menu)입니다.")
}

todayMenu(menu: "피자")

// 와일드 카드 패턴 적용
func todayMenu(_ menu: String) {
	print("오늘의 메뉴는 \(menu)입니다.")
}

todayMenu("피자")

파라미터 이름 명시하는 부분이 생략되어 호출할 수 있습니다! 

이 패턴은 function, for-in, if let, guard let 등등 다양한 곳에서 활용 가능합니다.

Comments