📱 모바일 프로그래밍/iOS 프로그래밍 기초
iOS 프로그래밍 15주차
SA성아
2024. 12. 11. 15:30
클로저(Closure)를 지원하는 언어
- JavaScript: JavaScript는 클로저를 지원하는 대표적인 언어입니다. 함수 내에서 선언된 변수는 함수 외부에서 접근할 수 있으며, 이를 통해 클로저를 생성할 수 있습니다.
- Python: Python에서도 클로저를 지원합니다. 함수 내에서 선언된 변수를 외부 함수에서 참조할 수 있어 클로저가 가능합니다.
- Ruby: Ruby는 람다와 프로시저를 통해 클로저를 구현할 수 있습니다. 블록이나 메소드를 통해 클로저를 활용할 수 있습니다.
- Swift: Swift에서는 클로저를 지원하며, 클로저가 외부 변수에 접근하고 이를 캡처하여 사용할 수 있습니다. 특히 capture lists를 통해 외부 변수의 메모리 관리도 할 수 있습니다.
- Scala: Scala에서는 함수형 프로그래밍을 지원하며, 클로저를 활용할 수 있습니다. 함수는 객체처럼 다룰 수 있고, 다른 함수에 전달되어 클로저가 형성됩니다.
- Java: Java에서는 람다 표현식과 익명 클래스를 사용해 클로저를 만들 수 있습니다. Java 8 이상에서는 함수형 프로그래밍을 지원하면서 클로저 개념이 도입되었습니다.
- Clojure: Clojure는 함수형 프로그래밍 언어로, 클로저를 기본적으로 지원하며, 클로저를 활용하는 코드가 자주 등장합니다.
- Haskell: Haskell은 함수형 프로그래밍 언어로, 클로저가 자연스럽게 활용됩니다. Haskell의 함수는 1급 객체로 취급되어 클로저를 만들 수 있습니다.
- Lisp: Lisp는 클로저를 잘 지원하는 함수형 언어입니다. 특히, 함수가 1급 객체로 취급되기 때문에 클로저를 쉽게 구현할 수 있습니다.
- Go: Go 언어에서도 클로저를 사용할 수 있습니다. Go의 함수는 1급 객체로 취급되며, 클로저를 생성할 수 있습니다.
add1의 자료형
방법1
func math(x: Int, y: Int, cal: (Int, Int) -> Int) -> Int {
return cal(x, y) // add1(1, 2)
}
print(math(x: 1, y: 2, cal: add1))
방법2
let a = math(x: 10, y: 20, cal: { (x:Int, y:Int) -> Int in
return x+y
})
print(a)
방법3
a = math(x: 100, y: 200) { (x:Int, y:Int) -> Int in
return x+y
} // 후행 클로저(trailing closure)
print(a)
2와 3은 같은 소스
출처: iOS 프로그래밍 기초 강의 자료