-
Swift #4 - 다수의 데이터 다루기Swift의 온도 2021. 1. 6. 02:29
1. 튜플
- 다수의 데이터
#가변 개수의 데이터
*데이터의 개수가 가변
*다루는 데이터의 타입
#다수의 데이터 다루기
*튜플
*배열
*딕셔너리
*셋
- 튜플(tuple)
*괄호 안에 콤마(,)를 이용해서 값 나열(1, "one", "일")*변수(상수)로 다루기var one = (1, "one", "일")*값 얻어오기, 값 설정var one = (1, "one", "일")one.2one.2 = "하나" // 값 설정하기*언더스코어(_) : 무시let(num,_,_) = onenum // 1cs - 이름 설정
*원소에 이름 설정*이름으로 접근let two = (num:2, eng:"two", kor:"둘")two.num // 2two.kor // 둘cs - 튜플 간 비교
*튜플 간 비교*튜플 내 원소 순서대로 비교(1, "1") == (1, "1") // true(1, "one") < (2, "two") // true(1, "one") < (2, "first")cs 2. 배열
- 콜렉션 타입
#배열, 딕셔너리, 셋
- 배열
#인덱스 기반, 다수의 데이터 다루기
#타입 선언 : Array<Element>, [Element]
* 배열 변수, 상수
#var로 배열 생성 - 배열 내용 수정 가능
#let으로 배열 생성 - 배열 내용 수정 불가(immutable)
- 배열 생성
var intArray:[Int] = [1,2,3,4,5]let strArray = ["A","B","C"]let floatArray = Array<Float>([1.1,2.2,3.3])*공백 배열(타입 선언 필요)var emptyArray = [Int]()var emptyArray2 = Array<Double>()var emptyArray3:[String] = []cs - 원소 접근
*원소 개수와 공백 확인floatArray.countemptyArray.isEmpty*항목 접근, 첨자 표기let element1 = intArray[0]let element2 = floatArray[1]cs - 배열 변경
#원소 추가
*원소 추가 함수mutating func append(_newElement: Elementmutating func insert(_newElement: Element, at i: Int)+연산자*예제 코드var intArray : [Int] = [1,2,3]intArray.append(5) // [1,2,3,5] 마지막에 추가intArray.insert(4, at: 3) // [1,2,3,4,5] 지정한 자리에 추가int Array += [6,7]cs #배열 항목 삭제 : remove
*특정 인덱스의 항목 제거intArray.remove(at.3) // 3에 해당하는 인덱스 제거*첫 번째 원소 제거, n개 제거func removeFirst()func removeFirst(_n: Int)*마지막 원소 제거, n개 제거intArray.removeLast()intArray.removeLast(_n: Int)cs #배열 내 원소 변경
*첨자로 변경var IntArray = [1,2,0,4]intArray[2] = 3 // 2에 대한 값을 3으로 변경intArray // [1,2,3,4]*범위를 이용한 배열의 원소 변경var intArray = [1,0,5,5]intArray[1...2] = [2,3,4] // 1번 인덱스 와 2번 인덱스를 2,3,4로 대치intArray // [1,2,3,4,5]cs - 밸류 타입
#Swift의 배열은 밸류 타입
*새로운 변수(상수)에 대입 → 복사var array1:[Int] = [1,2,3]var array2 = array1 // array1을 array2로 복사array1.append(4) // 복사 후 추가되었으므로 array2는 1,2,3 출력array1 // [1,2,3,4]array2 // [1,2,3]*배열 간 비교 : == 연산자let array1 = [1,2,3]let array2 = [1,2,3]array1 == array2 // truecs 3. 딕셔너리
- 딕셔너리
#키 - 값 방식으로 다수의 값 다루기
#딕셔너리 내 키는 유일
#키 : 해시값을 제공할 수 있는 Hashable
#딕셔너리 객체 생성
*타입 선언 - 키와 값, 두 타입 필요
*Dictionary<Key, Value>, [Key :Value]
#변수, 상수
*수정 가능 딕셔너리 : var
*수정 불가능 : let
#객체 생성
*키:String, 밸류:Stringvar dic = ["1월"."January", "2월"."February", "3월"."March"]*키:String, 밸류:Intvar dic2:[String:Int] = ["일":1, "이":2, "삼":3]*키:Int, 밸류:Stringvar dic3:Dictionary<Int, String> = [1:"One", 2:"Two", 3:"Three"]*빈 딕셔너리 객체 생성var emptyDic = [Int:Int]()cs - 딕셔너리 원소 접근
#딕셔너리 원소
*원소 개수:Count 프로퍼티dic.count*원소 접근(subscript)dic["2월"]*없는 원소에 접근하면?dic["NotExistKey"] // nilcs - 원소 변경
*원소 추가:새로운 키로 값 설정dic1["4월"] = "april"dic1["5월"] = "may"*변경 - 있는 키:updateValue(_:forkey:)dic1["4월"] = "잔인한 달"dic1.updateValue("계절의 여왕", forKey:"5월")*원소 삭제:removeValue(forKey:)dic.removeValue(forKey:"2월")dic["3월"] = nilcs - 밸류 타입
#딕셔너리도 배열 처럼 밸류 타입
*새로운 변수(상수) 대입 시 복사let newDic = dic*딕셔너리 객체 간 비교:==dic1 == dic2cs - 다중 구조
#콜렉션을 이용한 다중 구조
*2차원 배열과 접근하기var twoDimensionArray:[[String]] = [["a","b"],["c""d","e"],["f"]] //대괄호를 2개 쓸 경우 2차원 배열two.DimensionArray[1][1] // 첫 번째 배열의 첫 번째 원소 접근이므로 "d"에 접근*딕셔너리와 배열let evenNums = [2,4,6]let oddNums = [1,3,5,7]let dic:[String:[Int]] = ["even":evenNums, "odd":oddNums]dic["odd"]![1]cs 4. 셋(Set)
#유일한 원소
#원소만 저장
#임의의 순서
- 셋 객체 생성
*배열에서 생성var becerage:Set<String> = ["Coke", "Juice", "Milk"]*공백의 셋 객체 생성var letters = Set<Character>() // 공백의 셋 생성cs - 셋 : 원소 접근
*개수:count 프로퍼티beverage.count*빈 셋 확인:isEmptybeverage.isEmpty // false*원소 포함 확인 : contains(_:)beverage.contains("Coke")beverage.contains("Sprite")*Index 이용하기 // 배열과 달리 순서 유지의 보장이 없음let index = beverage.startIndexbeverage[Index]let index2 = beverage.index(after:beverage.startIndex)beverage[index2]*첫 번째 원소 접근:firstbeverage.first*배열 객체 생성 후 접근let beverageArray = Array(beverage)cs - 셋 : 원소 수정
*추가:insert(_:)beverage.insert("Soda")*삭제:remove(_:)beverage.remove("Milk")*동일 원소 추가:기존 객체 덮어쓰기cs - 셋 연산
#셋 집합 연산
*교집합 : insersection
*합집합 : union
*대칭차집합 : symmetricDifference
*차집합 : subtracting
*교집합var set1:Set<Int> = [1,2,3]var set2:Set<Int> = [2,3,4]let set3 = set1.intersection(set2)set3 // [1,2,3] 과 [2,3,4]의 교집합인 {2,3} 출력*합집합let set4 = set1.union(set2)set4 // set1, set2의 모든 원소들을 출력 {2,3,1,4}cs 'Swift의 온도' 카테고리의 다른 글
Swift #6 - nil과 옵셔널 (0) 2021.01.08 Swift #5 - 제어문 (0) 2021.01.07 Swift #3 - 문자와 문자열 (0) 2021.01.05 Swift #2 - 데이터 타입과 연산자 (0) 2021.01.01 Swift #1 - 개요 (0) 2020.12.31