Closure return

Zion·2022년 10월 4일
1
func manager(completion: @escaping () -> String) {
    let returnedValue = completion() + " Nice to meet you."
    print(returnedValue)
}

manager(completion: {
    return "Hello Manager"
})

//Hello Manager Nice to meet you.

글쓴 계기

구글의 애드몹, 애드 팝콘 같은 여러가지 광고 SDK를 사용하는 뷰를 작업했다.

특이하게 현재 광고를 보여주는 ViewController 정보를 알아야 했다.( 이는 광고 touch시 원하는 present와 같은 Action이 필요하기 때문인거같다고 추측했다.)

광고의 Source들은 Manager역할을 하는 class에서 관리하고 광고뷰의 components를 채우는 일은 뷰의 몫이다.

Manager에서 사용할 구글이나 애드팝콘 쪽에 request한 다음 변수로 가지고 있지 않고 바로 view로 전달할것이다. 광고 정보를 서버로부터 receive하는 시점을 알 수가 없기 때문에 이를 해결하기위해 closure array가 필요했다.

말하고 싶은 것

각설하고.

오늘 배운 것을 만날 () -> Void(Int) -> Void와 같이 인자를 전달해서 사용하는 closure에 익숙한 나머지 () -> String과 같은 용법을 잊고 있었다...

let returnedValue = completion()
위 코드를 생각해보면 맞다.
completion은 String Type을 return 하는 closure다.
즉 returnedValue는 String Type이고 더 나아가 "Hello Manager"이다.

closure 사용을 자유자재로 하자.

profile
어제보다만 나아지는

0개의 댓글