TIL 0117 - 클로저의 개념, 명언 생성기 앱 만들기

ian·2022년 1월 17일
0

TIL

목록 보기
11/11
post-thumbnail

오늘은 클로저 맛만 보고,, 명언 생성기 앱을 만들었다!

명언 생성기가 뭐지? 뭘 어떻게 만든거야? 한다면..
명언 생성기 여길 눌러주세용


이제 클로저에 대해 얘기할건데!
클로저와 함수는 기능은 완전히 동일한데, 형태만 다르다고 생각하면 될 듯 하네요?
함수는 이름이 있는 코드 묶음이고, 클로저는 이름이 없는 코드 묶음이라고 생각하면 됩니당

아참, 함수는 타입 표기법인거 .. 모르는 흑우 없제?

let functionA: (String) -> String      // 1)파라미터 문자열, 2)리턴형 문자열

let functionB: (Int) -> ()             // 1)파라미터 정수, 2)리턴형 없음

let functionC: (String) -> Void        // 1)파라미터 문자열, 2)리턴형 없음

기존 함수의 형태와 클로저의 형태를 비교해보려고 하는데!
우선 함수부터 보자

func aFunction(str: String) -> String {
    return "Hello, \(str)"
}

보통 함수는 이렇게 정의했었고 ..

다음 클로저는

let _ = {(str: String) -> String in
    return "Hello, \(str)"
}

어라? 뭐가 바뀐건지 한 번 같이 봐보자..

  1. 함수명이 없어졌네?
  2. 첫번째 중괄호가.. 맨 앞으로 옮겨 졌고.. 첫번째 중괄호가 있던 자리에 in 이 생겼네..

아! 이렇게 만드는거구나!

그렇다면 .. 클로저를 변수에 담는것도 가능하나?
네 담아드리겠읍니다~

let aClosureType = { () -> () in              // 변수에 담아서 호출하는 것도 가능
    print("안녕")
}
//let aClosureType = { print("안녕") }         // () -> ()

aClosureType() // "안녕"

---

func aFunction1(_ param: String) -> String {
    return param + "!"
}

var a: (String) -> String = aFunction1

a("안녕") // "안녕!"

학습 키워드

  • UIView
  • IBOulet, IBAction
  • MVC
  • 클로저

문제점 / 고민한 점

  • MVC 을 넘어 MVVM 도 유창하게 잘 구현하고 싶다..!

TIL 시리즈는 막연히 제가 배운 걸 기록하는 공간입니다.


출처:
앨런 swift 문법 마스터 스쿨
30개 프로젝트로 배우는 iOS 앱개발

profile
디자인씽킹을 하며 iOS 를 공부합니다

0개의 댓글