GUARD


struct

guard {booltype} else {
	//예외상황 실행문
}


ex1

for i in 0...3 {
    guard i == 2 else {
        continue
    }
    print(i)
}


ex2


func greet(_ person: [String: String]) {
    guard let name:String = person["name"] else {
        //nil일 경우 return 한다.
        return
    }

    guard let location:String = person["location"] else {
        print(" I hope the weather is nice near you")
        return
    }
    
}


ex3


let first: Int = 10
let second: Int = 20
guard first > second else {
    //이러한 방법으론 사용할 수 없다.
}



Map

컨테이너의 값을 매개변수로 전달된 함수를 실행하여 결과를 반환해주는 고차함수.


ex1

let numbers: [Int] = [0,1,2,3,4,5]
var doubleNumbers: [Int] = [Int]()
var strings: [String] = [String]()

//기존 for loop
for number in numbers {
    doubleNumbers.append(number * 2)
}

print(doubleNumbers)

//map 사용
doubleNumbers = numbers.map({ (number: Int) -> Int in
    return number * 2
})

strings = numbers.map({ (number: Int) -> String in
    return "\(number)"
})
print (strings)


ex2

 doubleNumbers = numbers.map({ (number: Int) -> Int in
    return number * 2
})

를 아래와 같이

 doubleNumbers = numbers.map{ $0 * 2 }


ex3

let evenNumers: [Int] = [0,2,4,6,8]
let odddNumbers: [Int] = [1,3,5,7,9]
let multiplyTow: (Int) -> Int = { $0 * 2 }
let doubledEvenNumber = doubleNumbers.map(multiplyTow)
print(doubledEvenNumber)



Filter

컨테이너 내부의 값을 걸러서 추출해주는 고차함수.


ex1

let numbers: [Int] =  [0,1,2,3,4,5]
let evenNumbers: [Int] = numbers.filter { (number:Int) -> Bool in return number % 2 == 0 }
print(evenNumbers)

map & filter


ex1

let numbers: [Int] = [0,1,2,3,4,5]
let mappedNumbers: [Int] = numbers.map{ $0 + 3 }
let evenNumbers: [Int] = mappedNumbers.filter{ $0 % 2 == 0}


ex2

let evenNumbers: [Int] = numbers.map{ $0 + 3 }.filter { $0 % 2 == 0 }

Reduce

합쳐주는 기능을 가진 고차함수.


ex1

let numbers: [Int] = [1,2,3]
//초기값이 0 모든정수를 더한다.
//초기값이 10이면   16이 나옴.
var sum: Int = numbers.reduce(0,{ (first: Int, second: Int) -> Int in
    print("\(first) + \(second) ")
    return first + second
})
print(sum)

var minus: Int = numbers.reduce(0, { $0 - $1})
print(minus)

let names: [String] = ["a","b","c"]
let sumNames: String = names.reduce("",{ $0 + $1 })
print(sumNames)


마치며



참고 & 출처 스위프트 프로그래밍