Swift는 많은 함수를 관리할수 있게 Collection이라는 기능이 있습니다
1. Array
- 순서에 따라 담을 수있는 상자라고 생각할 수 있다
- 담을 때에는 같은 타입의 데이터를 담아야 한다.
- 순서가 있는 아이템
- 아이템의 순서를 알면 유용할때
- ex)) 신작영화의 랭크
- 가장 많이 쓰이는 배열 메서드
- isEmpty : 비엇는지 판별
- count : 몇개의 인덱스가 있는지
- array[Int] : 해당 데이터에 접근하는 방법
- for in 구문 : 배열안의 key와 value를 순서대로 받아올수 있는 방법
2. Dictionary
- 데이터를 담는 종류
- 배열과는 다르게 순서가 없습니다.
- 키는 유일한 값으로 정해야한다.
- 값을 의미단위로 찾을때 유용하다
- 키를 이용해서 값을 호출
- for문을 이용할 때에도 순서가 일정하게 나온다는 보장이 없습니다
// 이름, 직업, 도시 에 대해서 본인의 딕셔너리 만들기
// 여기서 도시를 부산으로 업데이트 하기
// 딕셔너리를 받아서 이름과 도시 프린트하는 함수 만들기 이거는 한번에 못했어요 ...
var hyeongyuInfo: [String : String] = ["name": "Hyeongyu IM", "job": "NONE" , "city": "Seoul"]
hyeongyuInfo
hyeongyuInfo["city"] = "busan"
hyeongyuInfo
func printNameAndCity(dic: [String: String]) {
if let name = dic["name"], let city = dic["city"] {
print(name, city)
} else {
"cannot find"
}
}
printNameAndCity(dic: hyeongyuInfo)
3. Set
- Set는 순서가 없다
- 값만 들어있는 상자.
- 중복이 없는 유니크 한 아이템들을 관리할 때
- 순서가 중요하지 않을 때
var someSet: Set<Int> = [1, 2, 3, 1]
// 중복되는 값을 넣어도 출력되는 값은 {1, 2, 3} 으로 출력된다
// []대괄호로 넣어도 저런 괄호가 나오게 되는구나... 주의
4. Closure
- 이름이 없는 매서드라고 생각할수있다( = 이름이 없는 함수)
- 안쪽 Scope는 바깥쪽 Scope를 참조할수 있지만 바깥 Scope는 안쪽을 참조할수 없다.
- Scope안쪽에서 생성된 함수가 바깥쪽의 변수를 참조 할 수 있고, 만약 안쪽에서 생성된 함수가 Scope 밖에서 사용될 경우 안쪽에서 참조 되었던 변수를 바깥에서도 참조 할 수 있다
- 아주 정확히는 함수는 Closure의 한가지 타입
- Closure의 3가지 타입
- Global 함수
- Nested 함수
- closure expressions
- 함수는 func가 필요하지만 클로저는 func키워드가 필요없다
- 함수와 클로저는 First Class Type이다
- First Class Type이란
- 변수에 할당할 수 이다
- 인자로 받을수 있다
- 리턴 할 수 있다
- First Class Type이란
- 자주 쓰이는 Closure의 형태
- Completion Block
- 어떤 테스크가 완료 되었을 때 클로저가 실행
- 예를 들어 데이터 로딩이 끝나고 클로저를 실행하고 싶은 경우
- Higher Order Functions
- =인풋으로 함수를 받을수 있는 유형의 함수 = 고계함수
- Completion Block
4 - 1 Closure Syntax
// Trailing Closure
func somesimpleFunction(message: String, simpleClosure: () -> Void) {
print("함수에서 호출이 되었어요, 메세지는 \(message)")
simpleClosure()
}
somesimpleFunction(message: "로나로나 메로나, 코로나 극혐", simpleClosure: {
print("헬로 코로나 from Closure")
})
somesimpleFunction(message: "로나로나 메로나, 코로나 극혐") {
print("헬로 코로나 from Closure")
}
두번째 코드와 세번째 코드는 동일하게 작동한다 3번째를 추천한다.
마지막 함수실행의 파라미터에 함수이름이 없어도 그냥 실행이되네... 신기하다
'IOS > Swift' 카테고리의 다른 글
[TIL] Swift. Structure(Class, Struct, Enum) (0) | 2020.09.30 |
---|---|
[TIL] Swift. Function Expression (0) | 2020.09.29 |
[TIL] Swift. Optional (0) | 2020.09.24 |
[TIL]Swift. Function (0) | 2020.09.23 |
[TIL] Swift. Flow Control (0) | 2020.09.22 |