현제의 현재이야기
[swift] 기초 문법 6일차(클로저) 본문
클로저
let add : (Int, Int) -> Int
add = { (a: Int, b: Int) in
return a + b
}
func calculate(a: Int, b: Int, method: (Int, Int) -> Int) -> Int {
return method(a, b)
}
print(calculate(a: 50, b: 40, method: add))
var calculated : Int
calculated = calculate(a: 50, b: 40, method: { (left: Int, right: Int) -> Int in
return left + right
})
print(calculated)
// 90 90
함수에 인달인자로 많이 사용된다. 문법이 함수랑 비슷해서 헷갈릴 수도 있다.
다양한 표현
let add : (Int, Int) -> Int
add = { (a: Int, b: Int) in
return a + b
}
func calculate(a: Int, b: Int, method: (Int, Int) -> Int) -> Int {
return method(a, b)
}
var calculated : Int
calculated = calculate(a: 50, b: 40, method: { (left: Int, right: Int) -> Int in
return left + right
})
calculated = calculate(a: 50, b: 40) { (left: Int, right:Int) -> Int in
return left + right
}
calculated = calculate(a: 50, b: 40) { (left: Int, right: Int) in
return left + right
}
calculated = calculate(a: 50, b: 40){
return $0 + $1
}
calculated = calculate(a: 50, b: 40){ $0 + $1 }
print(calculated)
이렇게까지 축약될 수 있는데... 과연 어디다가 쓰는 걸까?
퀴즈로 안 것
func plus(a: Int, b: Int) -> Int {
return a + b
}
let add: (Int, Int) -> Int = [빈칸]
빈칸에
이것 중에서 { $0 + $1 }이 들어가면
이놈과 같은 놈이 된다. 그리고 함수에 (a:b:)같은 놈들을 안 넣어줘도 잘 실행된다. +) int와 같은 타입도 생략이 가능하다.
+ 클로저 반환타입에 void가 들어가는 경우는 return이 없을 때이다.
'IOS > swift' 카테고리의 다른 글
[swift] 기초 문법 8일차(상속) (0) | 2022.09.15 |
---|---|
[swift] 기초 문법 7일차(프로퍼티) (0) | 2022.09.14 |
[swift] 기초 문법 5일차 (0) | 2022.09.12 |
[swift] 기초 문법 4일차 (0) | 2022.09.11 |
[swift] 기초 문법 3일차 (0) | 2022.09.10 |
Comments