일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 티스토리챌린지
- 이분그래프
- 배윤슬
- 다자녀장학금
- 아이엔이야기
- 숫타니파아타
- 오블완
- 청년도배사 이야기
- 그래프2
- 나르시스트
- 집착형
- 쌍대성원리
- 합의정리
- 데이터베이스시스템
- wxmaxima
- 무소의뿔
- 2023채용박람회
- 등록금0원
- playground배열
- 오일러투어
- 윤파고
- wxMaxima install for mac os
- 정보처리기사공부방법
- 최단경로문제
- 이런 사람에게 "절대" 돈과 시간 쓰지 마세요. (이헌주 교수 3부)
- 제거된값 첨부하기
- 직선의방정식
- kgol
- 맥북에서 wxMaxima 설치
- 허스켈그래프
- Today
- Total
사적공간
swift 집단 자료형 본문
출처 :꼼꼼한 재은씨의 swift 문법/이재은/루미페이퍼
집단자료형의 종류
배열 : 일련번호로 구분되는 순서에 따라 데이터가 정렬된 목록 형태의 자료형
집합 : 중복되지 않은 유일 데이터들이 모인 집합 형태의 자료형
튜플 : 종류에 상관없이 데이터들을 모은 자료형, 수정 및 삭제를 할 수 없음
딕셔너리 : 배열과 유사하나 일련번호 대신 키를 사용하여 키-값으로 연관된 데이터들이 순서 없이 모인 자료형
튜플을 제외하고 나머지는 저장되는 데이터 타입이 동일해야 함.
배열
선언시 타입을 명확히 해야하고, 배열의 크기는 동적으로 확장 가능
정의방법
1. 정적방식 : 처음부터 배열 구성하는 아이템 포함해 정의, 선언 불필요 [ -, -, - ]
2. 동적방식 : 배열을 선언하고 그때 그때 추가하여 사용함
배열순회탐색
주로 반복문이 쓰임. for - in
1. 배열의 길이를 다루는 방식 : 배열의 길이를 구해서 이 횟수만큼 루프가 반복되도록 직접 구현함. 배열 자체에 의존않고 길이만 가져와서 원하는 만큼 횟수를 조정하고 다양한 작업 가능
2. 배열의 순회특성을 다루는 방식 : for - in 구문에 배열 자체를 넣어서 실행시키는 것을 의미
배열의 길이 = 배열에 있는 아이템의 수,
아래에서 배열의 데이터들이 문자열 데이터고, 루프 상수 i는 배열의 데이터를 받아들이므로
i는 문자열 타입으로 선언되게 됨.
배열의 동적 선언과 초기화
Array <아이템 타입> ( )
Array는 구조체로 정의된 객체이며, 실제 배열을 생성하고, 여러기능을 제공함.
<아이템 타입> 은 다른 종류의 데이터 타입이 입력되는 것을 막고, 배열 내부 아이템 사용에 도움을 줌
< > 기호를 써서 배열 내부 아이템 타입을 결정하는 것을 제네릭 이라고 함. 제네릭은 구조체나 클래스 외부에서 객체 내부에 사용될 타입을 지정할 수 있다는 점에서 동적 프로그래밍 영역으로 간주되기도 하며, 생산성을 높여줌.
동적 배열 정의는 선언과 초기화 과정이 차례로 필요함. 같이 할수도 있음
선언 : 컴파일러에게 이러이러한 배열을 만들겁니다. 이러이러한 공간을 사용하고 싶습니다. / 예약
초기화 : 앞서 선언한 대로 실제로 만들어 주세요. / 체크인, 초기화가 되어야 메모리 공간을 할당 받음.
배열을 정의하는 다른 방법 (정의 = 선언 + 초기화)
초기화 연산자 ( )
< > 쓰는 걸 제네릭
[아이템 타입]( )
배열 빈거 확인
배열 아이템 동적 추가
메소드 3가지
append(_:)
insert(_:at: )
append(contentsOf: )
append(_:)
배열 맨 뒤에 입력된 값을 추가함.
insert(_:at: )
원하는 위치에 입력된 값을 추가함. 뒤에 있는 값들은 뒤로 밀리면서 인덱스 값도 증가
append(contentsOf:[ _, _, _ )
배열 맨 뒤에 여러 개의 아이템을 추가하고 메소드의 인자값은 항상 배열임.
배열의 인덱스에 기본값들이 포함되어 있는 빈 배열을 만드는 방법
범위 연산자를 이용한 인덱스 참조
집합
순서가 중요하지 않고, 중복없이 한번만 저장되어야 하는 데이터를 다룰 때 씀
해시연산으로 데이터를 저장하므로, 저장되는 값은 해시연산이 가능해야 함. 해시값은 일련의 정수로 구성됨(해시연산을 해서 같은 해시 값이 나오는 것을 해시충돌이라 하는데, 그 가능성이 낮을수록 더 좋은 해시 알고리즘임)
스위프트에서 제공하는 타입은 모두 해시연산이 가능하나, 사용자가 정의한 타입은 다름. hash protocol을 구현해야 함.
정의방법
1. 초기값을 사용하여 바로 정의
2. 빈집합 선언하고 초기화하여 정의
1. 초기값을 사용하여 바로 정의
2. 빈집합 선언하고 초기화하여 정의
초기값을 사용하지 않은 빈 집합
Set<아이템 타입>( )
집합 순회 탐색
for i in 집합명 {
}
집합의 동적 추가와 삭제
배열과 같이 insert( )
삭제는 remove( ) , removeAll()
특정 아이템이 있는지 확인하는 contains( )
집합연산
기본집합연산
부분집합과 포함관계 판단 연산
튜플
하나의 튜플에 여러가지 타입의 아이템을 추가할 수 있으나 일단 선언되고 나면 상수적 성격을 띠므로 더이 상 값을 추가하거나 삭제할 수 없음.
튜플을 자료형이 아니라 연산자로 보는 시각도 있음. 배열이나 딕셔너리처럼 선언할 수 있는 키워드가 없고, 튜플로 선언해도 쓸 수 있는 메소드가 없으며, 인덱스 속성만 제공하고, 튜플의 크기를 계산하거나 순회특성도 지원하지 않음(for ~in 구문 지원안함)
( <튜플 아이템1>, <튜플 아이템2> ... )
딕셔너리
고유 키(key) - 값(Value) 을 연결하여 데이터를 저장하는 자료형
인덱스 대신 문자열 등의 고유 키를 사용한다는 차이를 제하면 배열과 흡사함 .
[ 키 : 데이터, 키 : 데이터 ]
-하나의 키는 하나의 데이터에 연결됨
-하나의 딕셔너리에서는 키를 중복할수 없음. 중복해서 선언하면 수정이 이루어지고 기존 값이 삭제됨.
-저장할 수 있는 데이터 타입에는 제한이 없지만, 하나의 딕셔너리에 저장하는 데이터 타입은 모두 일치해야 함.
-딕셔너리의 아이템에는 순서가 없지만 키에는 내부적으로 순서가 있으므로 for ~ in 구문을 이용한 순회탐색 가능
-딕셔너리에서 사용할 수 있는 키의 타입은 거의 제한이 없으나 해시(Hash) 연산이 가능한 타입이어야 함.
입력된 키를 해시연산을 거쳐서 변환한 후 이를 정렬해 사용함.
제러릭은 자료형 뒤에 < > 기호가 붙고 그 사이에 데이터 타입을 명시해주는 구문을 말함.
딕셔너리의 선언과 초기화
Dictionary < 키의 타입, 값의 타입> ( )
간소화 : [ 키로 사용할 타입 : 값으로 사용할 타입 ] ( )
딕셔너리에 동적으로 아이템 추가하기
딕셔너리도 배열처럼 아이템의 개수가 딕셔너리의 크기를 결정함.
딕셔너리에 값을 할당하는 메소드
<딕셔너리 객체>.updateValue(<저장할 데이터>, forKey:<데이터 참조 및 저장하는 데 사용할 키>)
기존에 있던 값을 수정하면 수정하기 이전 값을 반환하고, 기존에 있던 값이 없는데 수정하면 nil을 반환함.
딕셔너리에 저장된 아이템을 삭제 하는 방법
1. 키에 연결된 값에 nil을 할당
2. 명시적으로 메소드를 활용
없는 키와 값에 대한 연산이 일어날 경우 '오류'가 발생한다.
저장된 값을 불러올 떄, 업데이트 메소드를 실행한 결과를 반환할 때, 오류가 발생할 가능성을 염두해 특별한 형식으로 값을 반환..
옵져널(Optional)이 여기서 등장함.
딕셔너리 순회탐색
딕셔너리는 튜플타입으로 데이터를 받아 처리함
정렬은 해시값으로 함.
'ios > 문법' 카테고리의 다른 글
Swift 구조체와 클래스: 객체지향 스위프트 (0) | 2023.03.09 |
---|---|
Swift 함수 (0) | 2023.02.22 |
옵셔널 Optional (0) | 2023.02.22 |
swift 기본문법 (0) | 2023.02.16 |