inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

iOS12 앱 개발 퍼펙트 가이드

15_Closure_4

클로저 질문입니다.

해결된 질문

194

습득자

작성한 질문수 13

0

안녕하세요 공부하다 질문드립니다.

closure : (String)  -> Bool

 

여기서 closure는 매개변수명이고, (String)-> Bool이 매개변수타입이잖아요?

근데 타입에는 String, Int , Doble 타입 등이 올수 있는데

 

(String) -> Bool 이란 타입이라고 이해했는데 맞는지요?

또 , 왜 (String) -> Bool 이 클로져 타입인지 모르겠습니다.

 

클로져 타입의 기본틀은 { ( ) -> type in code }

이렇게 알고있는데

어째서 (String) -> Bool 이 부분이 클로져라고하는건가요?

ios swift

답변 1

1

iOS Developer - 이정

안녕하세요

 

거의 맞게 알고 계시고 조금 햇갈려 하시는 것 같아 정리해 드리자면.

 

1. closure를 선언 하는 문법은 아래 형식입니다. 

  1. { (parameters) -> return type in
  2. statements
  3. }
  4. 즉 closure를 만들때는 질문하신 형태가 맞습니다.
  5.  
  6. 그런데 어딘가에서 받기 위해 타입을 정의만 하는 곳이 있다면 아래와 같이 괄호와 in은 빠지고 정의해야 합니다.
  7. (parameters) -> return type

 

이해하신 것 처럼

let someInt: Int -> Int 타입

let someString: String -> String 타입

이렇게 되죠. 마찬가지로 아래처럼 선언할 수 있는데

let someClosure:  (Int) -> Void 

 

참고로 class 안에서 선언하면

let someClosure: ((Int) -> Void)! = nil

이런 느낌으로 해야되겠죠

 

이걸 Closure타입이라고 표현하는거라고 이해하시면 될 것 같습니다.

물론 풀어서 Int를 받는 리턴없는 블록이라는 표현도 하고 익명함수 타입이라고 표현하기도 합니다.

표현하는 말이 좀 다를 뿐 의미는 다 같습니다. 

 

 

예로 아래처럼 closure를 만들어서

let printDouble = { (num: Int) -> Void in

    print(num * 2)

}

위에서 someClosure를 만들었으니

someClosure = printDouble

이렇게 대입해서 써도 됩니다.

 

만드는 부분과 대입하는 부분의 형태구성만 잘 이해하시면 될 것 같습니다.

 

 

강의 정리 및 개인 공부

0

278

1

DispatchQueue 질문입니다.

0

575

1

log in 강의 질문드립니다.

0

304

1

meal cell 클릭시 화면 이동 문제

0

379

1

meal cell 클릭시 화면이동 불가

0

347

2

import CreateMLUI 이 안됩니다.

0

241

1

Stop Watch 질문

0

350

2

SignIn ViewController와 SignUp ViewController가 꽉 차지 않는 이유가 궁금합니다.

0

261

1

createMLUI가 import되지 않습니다

0

460

1

plist에 nsallowsarbitraryloads 추가시에도 http통신이 안됩니다

0

904

1

질문드립니다~

0

355

1

질문드립니다.

0

278

2

view와 Viewcontroller의 관계에 대해서 질문 드립니다.

0

222

1

stopwatch 강의 중 시간단위 변경에 대해 질문드립니다.

0

376

2

VNCoreMLRequest 실행 안됨

0

377

2

autolayout attr

0

208

0

Sign in 할때 발생하는 에러가 왜 나타나는지 모르겠습니다.

0

344

1

강의 관련 소스 코드 공유 부탁 드립니다.

0

363

2

별표시부분에 색깔이 칠해는거 없애려면 어떻게 하면 될까요?

0

252

1

반드시 required init을 생성해야하는 이유가 뭔가요??

0

952

1

3:20~ 3: 30 초에 rating 값을 0 으로 만들어 준다고했는데 왜 0으로 만들어주는 코드가 없죠?

0

256

1

질문입니다.

1

255

3

강사님 안녕하세요

0

161

1

MealDetailViewController에서 이미지 가져오지 못하는 문제

0

217

1