Swift

15. Closure (클로저)

리버윤 2024. 12. 11. 15:11
728x90
Chat gpt. closure를 사용하는 언어들을 알려줘

 클로저(Closure)는 여러 프로그래밍 언어에서 지원하는 기능으로, 함수와 그 함수가 선언된 환경을 함께 캡슐화하여 사용할 수 있게 합니다. 클로저를 지원하는 주요 프로그래밍 언어는 다음과 같습니다:

  • JavaScript: 클로저는 JavaScript의 핵심 개념 중 하나로, 함수가 다른 함수의 범위에 접근할 수 있도록 합니다.
  • Python: Python에서는 내부 함수를 정의하여 클로저를 만들 수 있습니다.
  • Ruby: Ruby의 블록과 프로시저는 클로저의 형태로 사용될 수 있습니다.
  • Swift: Swift의 클로저는 변수를 캡처하고 사용할 수 있는 기능을 제공합니다.
  • Scala: Scala는 함수형 프로그래밍을 지원하며, 클로저를 사용하여 상태를 유지할 수 있습니다.
  • Go: Go 언어에서도 클로저를 지원하여 함수 내부에서 변수를 캡처할 수 있습니다.
  • Kotlin: Kotlin의 람다 표현식은 클로저의 특성을 가지고 있습니다.
  • Haskell: Haskell은 함수형 언어로서 클로저를 자연스럽게 지원합니다.
  • Lisp: Lisp 계열 언어는 클로저를 기본적으로 지원하며, 다양한 형태로 사용할 수 있습니다.
  • C#: C#의 람다 식과 익명 메서드는 클로저 기능을 제공합니다.

- 클로저 (Closure)

func add(x:Int, y:Int) -> Int {
    return x+y
}
print(add(x: 3, y: 5)) //여기와
print(type(of: add))
let add1 = { (x:Int, y:Int) -> Int in
    return x+y
}
print(add1(2, 3)) //여기 주의

 

- 후행 클로저

func add(x:Int, y:Int) -> Int {
    return x+y
}
print(add(x: 3, y: 5)) //여기와
print(type(of: add))
let add1 = { (x:Int, y:Int) -> Int in
    return x+y
}
print(add1(2, 3)) //여기 주의

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))

 

func add(x:Int, y:Int) -> Int {
    return x+y
}
print(add(x: 3, y: 5)) //여기와
print(type(of: add))
let add1 = { (x:Int, y:Int) -> Int in
    return x+y
}
print(add1(2, 3)) //여기 주의


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))

var a = math(x: 10, y: 20, cal: { (x: Int, y:Int) -> Int in
    return x+y
})
print(a)  //30
a = math(x: 100, y: 200) { (x:Int, y:Int) -> Int in
    return x+y
} //후행클로저
print(a)  //300


math(x: 10, y: 20) { (x:Int, y:Int) -> Int in
    return x+y
}
math(x: 10, y: 20, cal: { (x:Int, y:Int) -> Int in
    return x+y
})

 

 

 

 

 

728x90