🔒 클로저와 함수의 차이 쉽게 이해하기
– Swift 초보자를 위한 클로저 입문 예제와 실습
안녕하세요! 😊 이번에는 Swift에서 자주 들리는 용어,
바로 함수(Function) 와 클로저(Closure) 의 차이에 대해 배워볼 거예요.
처음에는 헷갈릴 수 있지만, 예제와 실습을 따라가다 보면
“클로저도 그냥 익명 함수야!” 라는 걸 알게 될 거예요!
✅ 함수와 클로저는 무엇이 다른가요?
항목 |
함수 (Function) |
클로저 (Closure) |
---|---|---|
이름 |
있음 (명명됨) |
없음 (익명 가능) |
사용 위치 |
전역, 지역 모두 가능 |
변수에 저장하거나 다른 함수에 전달 |
형태 |
func 키워드 사용 |
중괄호 {}로 표현 |
기능 |
기본 코드 블록 |
캡처(Capture) 가능 |
📦 1. 함수(Function) 복습
func greet(name: String) {
print("Hello, \(name)")
}
greet(name: "지우")
-
함수는 이름이 있고, func로 시작합니다.
-
정의된 함수를 나중에 불러서 사용합니다.
🧲 2. 클로저(Closure) 기본 예제
let greet = { (name: String) in
print("Hello, \(name)")
}
greet("민준")
-
let greet = { ... }로 정의
-
in 키워드 앞에는 파라미터
-
in 뒤에는 실행할 코드
🧪 예제 1: 함수와 클로저 비교
✅ 함수
func add(a: Int, b: Int) -> Int {
return a + b
}
print(add(a: 3, b: 4)) // 7
✅ 클로저
let add = { (a: Int, b: Int) -> Int in
return a + b
}
print(add(3, 4)) // 7
차이점: 클로저는 이름 없이 변수에 저장됩니다!
🧪 예제 2: 클로저를 함수에 파라미터로 전달
func applyTwice(_ value: Int, using operation: (Int) -> Int) -> Int {
return operation(operation(value))
}
let square = { (num: Int) -> Int in
return num * num
}
print(applyTwice(2, using: square)) // 16
이렇게 하면 클로저를 함수처럼 전달해서 사용할 수 있어요.
실제로 Swift에서 UI 이벤트나 애니메이션 처리에 자주 쓰입니다!
🧠 클로저의 장점
-
함수처럼 코드를 재사용할 수 있음
-
이름 없이 짧게 정의 가능
-
다른 함수에 쉽게 전달 가능
-
외부 변수 캡처 가능 (이건 다음 고급편에서 다룰게요!)
✏️ 실습 예제
✅ 실습 1: 이름을 받아서 “안녕하세요, 000님!” 출력하는 클로저 만들기
let sayHello = { (name: String) in
print("안녕하세요, \(name)님!")
}
sayHello("연우")
✅ 실습 2: 두 수를 받아서 나눗셈 결과를 반환하는 클로저 만들기
let divide = { (a: Double, b: Double) -> Double in
return a / b
}
print(divide(10, 2)) // 5.0
✨ 마무리하며
구분 |
함수(Function) |
클로저(Closure) |
---|---|---|
기본 문법 |
func 이름() |
{ (매개변수) -> 반환타입 in 실행문 } |
사용 예 |
재사용할 코드 블록 |
콜백, UI 핸들러, 고차함수 인자 등 |
클로저는 처음엔 어려울 수 있지만,
한 번 익히면 앱의 반응성과 유연함을 크게 향상시켜주는 도구예요.
댓글 쓰기