[TIL]0729_swift Closure

JJ_u·2021년 7월 29일
0

TIL

목록 보기
4/7
post-thumbnail
post-custom-banner

Closure

❗️정확하지 않을 수 있음

  • 기능을 수행하는 코드블록의 특별한 타입
    • 함수는 Closure의 한가지 타입
  • Closure는 크게 3가지 타입
    • Global 함수
    • Nested 함수
    • Closure Expressions
      • 함수처럼 기능을 수행하는 코드블록
      • 함수와 다르게 이름이 없다

함수와 공통점과 차이점

💡Function(Global)

✔️이름이 있다

✔️func 키워드 필요

💡Closure

✔️이름 없다

✔️func 키워드 필요 없음

⭐️공통점
✔️인자 받을 수 있다.

✔️값 리턴할 수 있다.

✔️변수로 할당할 수 있다.

✔️First Class Type이다.

First Class Type

  • 변수 할당⭕
  • 인자 받을 수⭕
  • 리턴⭕

Closure가 쓰이는 유형

  • Completion Block
    • 어떤 테스크가 완료되면서 closure를 수행할때
    • 데이터가 받아지는게 완료가 됐을때 데이터를 뿌리는? 코드블록을 수행시킬때
  • Higher Order Functions
    • 인자를 함수로 받을 수 있는 것(함수를 input으로 받는것) 고계함수?
// Ex코드

/*
{ (param) -> return type in
    statement
    ....
}
*/

// Ex1: Very Simple Closure

let verySimpleClosure = {

}

verySimpleClosure()

// Ex2: 코드블록을 구현한 Closure

let verySimpleClosure = {
    print("Hello, 클로져, 코로나 하이!")
}

verySimpleClosure()

// Ex3: 인풋 파라미터를 받는 Closure

let verySimpleClosure: (String) -> Void = { name in
    print("Hello, 클로져, 코로나 하이! 나의 이름은 \(name) 입니다!")
}

verySimpleClosure("찐찐")


// Ex4: 값을 리턴하는 Closure

let verySimpleClosure: (String) -> String = { name in

    let message = "iOS 개발 짱짱맨, \(name)님 경제적 자유를 얻으실 거에요!"
    return message
}

let result = verySimpleClosure("찐찐")
print(result)

// Ex5: Closure를 파라미터로 받는 함수 구현

func someSimpleFunction(verySimpleClosure: () -> Void) {
    print("함수에서 호출이 되었어요")
}

someSimpleFunction(verySimpleClosure: {
    print("헬로 코로나 from closure")
})

func someSimpleFunction(verySimpleClosure: () -> Void) {
    print("함수에서 호출이 되었어요")
    verySimpleClosure()
}

someSimpleFunction(verySimpleClosure: {
    print("헬로 코로나 from closure")
})

// Ex6: Trailing Closure

func someSimpleFunction(message: String, verySimpleClosure: () -> Void) {
    print("함수에서 호출이 되었어요. 메세지는 \(message)")
    verySimpleClosure()
}

someSimpleFunction(message: "로나로나코로나", verySimpleClosure: {
    print("헬로 코로나 from closure")
})

someSimpleFunction(message: "로나로나코로나") {
    print("헬로 코로나 from closure")
}

🍎느낀점

  • 클로져 어렵다....뭔가 잡히는데 안잡히는 그런 느낌?
  • 패캠 강의보고 대충 이해가 가는거 같은데 공식문서 한번 봐야겠다.
  • 파이썬 자료구조도 담주면 본격적으로 시작할거같은 고런 느낌??
  • 오마이걸 클로저 생각난다
profile
개발자 만들기
post-custom-banner

0개의 댓글