반응형
오랜만에 강의를 들어서 그런지... 진도도 빠르고.. 알아듣기 쉬운데 기분탓인가...
아직은 기초문법이라 그럴수도..
컬렉션
하나 이상의 데이터를 보관할 수 있는 특수한 자료구조.
Swift의 컬렉션 타입 종류
- Array
- 소속된 멤버가 순서를 가진 리스트 형태
- Dictionary
- '키'와 '값'으로 이루어진 타입
- map과 비슷함
- Set
- 중복되지 않은 멤버가 순서 없이 존재하는 컬렉션
Array
배열이며 다른 언어와 개념의 차이는 크게 없다.
var integers : Array<Int> = Array<Int>();
integers.append(1); // 1값을 가진 멤버 추가.
integers.append(100);
integers.contains(100); // 100이라는 값이 있는지에 대한 여부 확인.
integers.remove(at:0); // 0번째 멤버 삭제
integers.removeLast(); // 마지막 멤버 삭제
integers.removeAll(); // 모든 멤버 삭제
//두개는 같은 Array를 만듬. 문법의 차이.
var doubles : Array<Double> = [Double]();
var doubles2 : [Double] = [];
let tempArray : Array<Int> = [1,2,3]; // let으로 선언했기 때문에 배열의 값을 변경하거나 추가하는 것은 안됨.
배열을 선언하는것 외에는 크게 어려움이 없을 것 같다. ( 문법이 좀 헷갈리는.. )
contains는 유용하게 사용 될듯!
Dictionary
사전이라는 의미이며 Key와 Value로 이루어진 컬렉션으로 map과 비슷하다
( 비슷하다라는 표현을 쓴건 현재 사용되는 기능과 방법은 똑같으나 그 기반이 되는 로직이 다를 수 있기 때문에. )
var anyDictionary : Dictionary<String, Any> = [String:Any](); // 선언. String으로 된 key와 Any형의 값을 갖는다.
anyDictionary["tempKey"] = "tempValue";
anyDictionary["temp2Key"] = 100;
// tempKey키의 값을 dictionary로 변경
anyDictionary["tempKey"] = "dictionary";
nayDictionary.removeValue(forKey : "temp2Key"]; // temp2Key 키를 가진 값을 삭제
anyDictionary["tempKey"] = nil // tempKey 키의 값을 nil로 변경
let emptyDictionanry : [String:String] = [:] // 빈 값으로 초기화
let testDictionary: [String:String] = ["name":"뚠님", "job":"Developer"]; // 변경할 수 없는 dictionary 생성 및 초기 값
Dictionary는 개념은 크게 어렵진 않은데 쓰고나니 문법이 좀 익숙하지 않다.
아직도 콜론(:)과 let은 익숙하지 않...
let testDictionary: [String:String] = ["name":"뚠님", "job":"Developer"];
let tempV : String = testDictionary["name"]; // 에러 발생!!
추가로 참고할 것은 위의 코드처럼 tempV에 testDictionary의 값을 넣으려면 에러가 발생하는데
자료형이 같지만 에러가 발생하는 이유는 testDictinary["name"]값이 nil일 수도 있기 때문이다.
Set
중복되지 않는다는 특수성을 가진 컬렉션. ( 아주 좋아. ... 문법 빼고.. )
var integerSert : Set<Int> = Set<Int>();
integerSet.insert(1);
integerSet.insert(100); // true
integerSet.insert(100); // false, 이미 100이 있기 때문에.
integerSet.contains(1); // 1이 ㅣㅇㅆ는지 여부 확인
integerSet.remove(100); // 100 삭제.
integerSet.count // integerSet 개수
let setA : Set<Int> = [1,2,3,4,5];
let setB : Set<Int> = [3,4,5,6,7];
let union : Set<Int> = setA.union(setB); // 중복된 값을 제거한 합집합
let sortedUnion:[Int] = union.sorted(); // union값 정렬
let intersection : Set<Int> = setA.intersection(setB); // 교집합
let subtraction : Set<Int> = setA.subtraction(setB); // 차집합
같은 값을 입력할 경우 처리 되지 않는다.
Array와 비슷한 메소드를 가지고 있어서 제어 하기 쉽다.
반응형
'Develop > Swift' 카테고리의 다른 글
Swift 함수 (0) | 2019.05.07 |
---|---|
Swift Any, AnyObject, nil (0) | 2019.05.07 |
Swift 상수와 변수의 선언, 데이터 타입 (0) | 2019.05.07 |
Swift 콘솔로그, 문자열 보간법 (0) | 2019.05.07 |