[Swift Apple ] Swift 클러저 입문 클로저와 함수의 차이와 사용법

🔒 클로저와 함수의 차이 쉽게 이해하기

– 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 핸들러, 고차함수 인자 등

클로저는 처음엔 어려울 수 있지만,

한 번 익히면 앱의 반응성과 유연함을 크게 향상시켜주는 도구예요.


댓글 쓰기