왕논의 연구실

패스트캠퍼스 챌린지 12일차(수정) 본문

강의/강의 챌린지(iOS 앱 개발 올인원 패키지 Online)

패스트캠퍼스 챌린지 12일차(수정)

ywangnon 2021. 11. 12. 20:32

12일차는 Set와 클로저입니다.

 

Set는 봉지안에 각각 구분되는 것들을 담은 것과 같습니다. 딕셔너리의 키값만을 모아놓은 것으로 볼 수 있습니다. 그래서 순서가 없고 각각이 유일한 값을 가지고 있습니다.

 

만약 중복되는 값을 넣어주면 중복된 값을 1개만 남기고 다 없앱니다.

 var someArray: Array<Int> = [1, 2, 3, 4] // 1,2,3,4
 ​
 var someSet: Set<Int> = [1, 2, 3, 1, 2] // 1,2,3

 

세트도 빈값과 갯수를 알 수 있습니다.

 

 someSet.isEmpty

 

 someSet.count

 

그리고 값이 포함되었는지 알 수 있습니다.

 someSet.contains(4)
 someSet.contains(1)

 

세트에 값을 넣을 때는 append가 아닌 insert를 사용해서 넣어줍니다.

 someSet.insert(5)

 

특정값 삭제시에는 remove로 없애줍니다.

 someSet.remove(1)

 

실습사진 1

 

 

클로저는 이름없는 함수입니다. 거꾸로 함수는 클로저의 한가지 타입으로 볼 수 있습니다. 클로저의 종류에는 3가지가 있습니다.

    • Global 함수
    • Nested 함수
    • Closure Expressions
Function(Global) Closure
이름 있다. 이름 없다.
Func 키워드 필요 Func 키워드 필요 없음
인자 받을 수 있다.
값 리턴 가능
변수로 할당 가능
First Class Type

 

First Class Type 이란 변수에 할당할 수 있다, 인자로 받을 수 있다, 리턴 할 수 있다

 

클로저는 다양한 방법으로 코드를 줄일 수 있습니다. 하지만 지나치게 줄이면 가독성이 줄어들기 때문에 적당한 선에서 줄이는게 좋습니다.

var multiplyClosure: (Int, Int) -> Int = { (a: Int, b: Int) -> Int in
    return a * b
}

// 파라미터 타입 삭제
var multiplyClosure: (Int, Int) -> Int = { (a, b) -> Int in
    return a * b
}

// 괄호 삭제
var multiplyClosure: (Int, Int) -> Int = { a, b in
    return a * b
}

// 파라미터 삭제
var multiplyClosure: (Int, Int) -> Int = { return $0 * $1 }

// return 삭제
var multiplyClosure: (Int, Int) -> Int = { $0 * $1 }

 

일반적인 함수는 바깥쪽 스코프에서 선언된 변수는 안쪽 스코프에서는 사용할 수 있지만, 안쪽에서 선언된 함수는 바깥쪽에서 사용할 수 없다.

 {
   // 바깥 scope
   let numOutside = 3
   if true {
     // 안쪽 scope
     let numInside = 5
     print(numOutside, numInside)
   }
   print(numOutside, numInside) // numInside 접근 불가로 오류
 }

 

그런데 클로저는 안쪽에서 선언된 변수를 사용해서 작성한 경우 바깥쪽에서 사용해도 작동한다. 이를 캡쳐했다고 하는데, capturing Values라고 한다.

 

if문 안쪽에 name이 선언되었는데, 이를 클로저에서 사용하고 있다. 이 클로저를 if문 바깥에서 사용하면 어떨까? name이 그대로 사용되는데 이는 변수를 캡쳐했기 때문이다.

 if true {
   let name = "Jason"
   printClosure = {
     print(name)
   }
 }

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

 

https://bit.ly/3FVdhDa

 

수강료 100% 환급 챌린지 | 패스트캠퍼스

딱 5일간 진행되는 환급챌린지로 수강료 100% 환급받으세요! 더 늦기전에 자기계발 막차 탑승!

fastcampus.co.kr

 

#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #iOS앱개발올인원패키지Online.