본문 바로가기

프로그래밍 [KOR]/Swift

Swift의 클로저

1. 클로저


  •클로저는 실행가능한 코드 블럭

  •함수와 다르게 이름정의는 필요하지는 않지만, 매개변수 전달과 반환 값이 존재 할 수 있다는 점이 동일

  •함수는 이름이 있는 클로저

  •일급객체로 전달인자, 변수, 상수 등에 저장 및 전달이 가능



2. 기본 클로저 문법


  •클로저는 중괄호 {}로 감싸져있음

  •괄호를 이용해 파라미터를 정의

  •-> 을 이용해 반환 타입 명시

  •"in"키워드를 이용해 실행 코드와 분리


1
2
3
{ (매개변수 목록) -> 반환타입 in
    /* 실행 코드 */
}
cs



3. 클로저 사용


1
2
3
4
5
6
7
// sum이라는 상수에 클로저를 할당
let sum: (IntInt-> Int = { (a: Int, b: Intin
    return a + b
}
 
let sumResult: Int = sum(12)
print(sumResult) // 3
cs



4. 함수의 전달인자로서 클로저


  •클로저는 주로 함수의 전달인자로 많이 사용됨

  •함수 내부에서 원하는 코드블럭을 실행할 수 있음


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
let add: (IntInt-> Int
add = { (a: Int, b: Intin
    return a + b
}
 
let substract: (IntInt-> Int
substract = { (a: Int, b: Intin
    return a - b
}
 
let divide: (IntInt-> Int
divide = { (a: Int, b: Intin
    return a / b
}
 
func calculate (a: Int, b: Int, method: (IntInt-> Int-> Int {
    return method(a, b)
}
 
var calculated: Int
 
calculated = calculate(a: 50, b: 10, method: add)
 
print(calculated) // 60
 
calculated = calculate(a: 50, b: 10, method: substract)
 
print(calculated) // 40
 
calculated = calculate(a: 50, b: 10, method: divide)
 
print(calculated) // 5
 
// 따로 클로저를 상수/변수에 넣어 전달하지 않고,
// 함수를 ㅗ출할 때 클로저를 작성하여 전달할 수도 있음
 
calculated = calculate(a: 50, b: 10, method: { (left: Int, right: Int-> Int in
    return left * right
})
 
print(calculated) // 500
cs






제 나름대로 생각을 정리하며 포스팅합니다.

정보전달에 있어 차질이 생기는 것을 우려해 나름대로 확실하게 검증을 하고 포스팅하려고 노력합니다.

본 포스팅에 잘못된 정보가 있거나 수정해야할 내용이 있다면 댓글 또는 아래의 이메일로 알려주시면 감사하겠습니다.

E-mail : silent_lhr@naver.com



공감은 로그인이 필요없습니다.

공감은 저에게 포스팅을 이어나갈 수 있는 힘이 됩니다.


'프로그래밍 [KOR] > Swift' 카테고리의 다른 글

Swift의 프로퍼티  (0) 2018.10.11
Swift의 클로저 고급  (0) 2018.10.11
Swift의 값/참조 타입  (0) 2018.10.10
Swift의 열거형  (0) 2018.10.08
Swift의 클래스  (0) 2018.10.08