728x90
반응형
클로저(Closures)는 무엇일까?
클로저는 실행 가능한 코드 블럭이다.
함수와 달리 이름이 정의되지 않아도 괜찮지만 함수처럼 파라미터 전달 및 리턴 값이 존재할 수 있다.
일급 객체로써 변수, 상수 등에 저장이 가능하고 함수의 파라미터에도 전달이 가능하다.
기본 클로저 문법 알아보기
{ (parameters) -> returnType in
// running code
}
클로저는 기본적으로 중괄호로 감싸져있다.
괄호를 통해 파라미터를 정의하고 "->" 를 이용해 리턴 타입을 명시한다.
"in" 키워드를 이용해 실행 코드와 분리한다.
간단한 예시로 사용해보기
let sum: (Int, Int) -> Int = { (x: Int, y: Int) in
return x + y
}
let result: Int = sum(1, 2)
print(result)
sum이라는 let 상수에 클로저를 할당해주었고 이를 통해 간단한 연산을 해보았다.
함수 전달인자(Argument)로 사용해보기
클로저는 주로 함수의 전달인자로 사용되는데
이를 통해 함수 내부에서 원하는 코드블럭을 실행할 수 있다.
let add: (Int, Int) -> Int
add = { (x: Int, y: Int) in
return x + y
}
let sub: (Int, Int) -> Int
sub = { (x: Int, y: Int) in
return x - y
}
let div: (Int, Int) -> Int
div = { (x: Int, y: Int) in
return x / y
}
func calculate(x: Int, y: Int, method: (Int, Int) -> Int) -> Int {
return method(x, y)
}
var result: Int
result = calculate(x: 50, y: 10, method: add)
print(result)
result = calculate(x: 50, y:10, method: (a: Int, b: Int) -> Int in
return a * b
})
print(result)
첫번째 result처럼 클로저를 상수 혹은 변수에 넣어 전달할 수도 있지만,
두번째 result처럼 함수 호출 시 클로저를 만들어 전달할 수도 있다.
728x90
반응형
'Language > Swift' 카테고리의 다른 글
Swift - 프로퍼티(Properties) (0) | 2024.11.21 |
---|---|
Swift - 클로저(Closures) - 2 (0) | 2024.11.15 |
Swift - Class, Struct, Enum 비교하기 (0) | 2024.05.13 |
Swift - 열거형(Enum) (0) | 2024.05.12 |
Swift - 클래스(Class) (0) | 2023.12.05 |