Closure는 일종의 코드 블럭이다. 별도의 코드들을 하나로 묶어서 처리하는 기능이다.
- closure expression
var numbers = [20, 19, 7, 12]
numbers.map({
(number: Int) -> Int in
let result = 3 * number
return result
})
반환값 : [60, 57, 21, 36]
- closure의 type을 알고 있다면 parameters나 반환값을 생략할 수 있습니다.
numbers.map({ number in 3 * number })
- sort 예제
sort([1, 5, 3, 12, 2]) { $0 > $1 }
- sort 예제
let names = ["Chris", "Alex", "Ewa", "Barry", "Daniella"]
func backwards(s1: String, s2: String) -> Bool {
return s1 > s2
}
var reversed = sorted(names, backwards)
// reversed is equal to ["Ewa", "Daniella", "Chris", "Barry", "Alex"]
위 코드와 아래 코드들은 같은 내용이다.
reversed = sorted(names, { (s1: String, s2: String) -> Bool in return s1 > s2 } )
reversed = sorted(names, { s1, s2 in return s1 > s2 } )
reversed = sorted(names, { $0 > $1 } )
reversed = sorted(names, >)
func isCount(s1: String, s2: String) -> Bool {
return count(s1) > count(s2)
}
var reversed2 = sorted(names, isCount)
// reversed2 is equal to ["Daniella", "Chris", "Barry", "Alex", "Ewa"]
- map
let digitNames = [
0: "Zero", 1: "One", 2: "Two", 3: "Three", 4: "Four",
5: "Five", 6: "Six", 7: "Seven", 8: "Eight", 9: "Nine"
]
let numbers = [16, 58, 510]
let strings = numbers.map {
(var number) -> String in
var output = ""
while number > 0 {
output = digitNames[number % 10]! + output
number /= 10
}
return output
}
// strings is inferred to be of type String[]
// its value is ["OneSix", "FiveEight", "FiveOneZero"]
'Smart Device > Swift' 카테고리의 다른 글
Swift 연산자 (0) | 2014.06.10 |
---|---|
Swift Objects and Classes #1 (0) | 2014.06.09 |
Swift 함수 #4 - 반환값과 인수의 기능을 하는 함수 (0) | 2014.06.09 |
Swift 함수 #3 - nested functions(중첩함수) (0) | 2014.06.09 |
Swift 함수 #2 - 여러개의 반환값과 인수를 가지는 함수 (0) | 2014.06.09 |