- print() 함수는 디버깅 콘솔에 간략한 정보를 출력해준다.
- dump()는 보다 자세한 정보를 출력해준다. 이는 출력하려는 인스턴스의 자세한 내부 컨텐츠까지 출력해준다.
- // : 더블 슬래시로 한 줄 주석 작성이 가능하다.
- /*(슬래시 + 별) ----- 사이에 글을 넣어서 장문의 주석 작성이 가능하다.
- 변수는 생성 후 데이터 값 변경이 가능하다.
- 상수는 한번 값을 설정하면 다음에 변경이 안된다.
- 변수에서 데이터 타입 생략 하 선언이 가능하다.
- 스위프트의 타입 추론 덕에 컴파일에 오류가 생기지 않는다.
- 상수를 사용하는 이유는 가독성 때문이다. 변하지 않는 값이므로 고유한 특성이나 불변하는 값을 명시할 때 상수를 선언한다.
데이터 타입은 프로그램 내 다뤄지는 자료형을 말한다.
모두 첫글자가 대문자로 시작하는 대문자 카멜케이스를 채용한다.
데이터 타입에는
1. Int/UInt : 정수(양의 정수) 타입,
2. Bool : 참 거짓 타입,
3. Float, Double : 부동소수 타입,
4. Character: 문자 타입,
5. String : 문자열 타입,
6. Any/AnyObject : 모든 데이터 타입
[// 다음과 같이 총 6개의 타입으로 나뉜다.
- 타입 별칭 : typealias 를 사용해서 타입의 또다른 명칭을 지정해줄 수 있다.
- 튜플 : 튜플은 지정된 데이터 묶음이다. 이는 타입 이름이 따로 없으므로 타입의 나열만으로 타입 생성이 가능하며, 데이터 갯수는 자유롭다.
- 컬렉션형은 배열, 딕셔너리, 세트 등이 있다.
- let으로 선언하면 변경 못하는 배열, var로 생성하면 변경이 가능하다.
- isEmpty 프로퍼티로 빈 배열 Bool 값 확인이 가능하다.
- count 프로퍼티로 배열의 요소 갯수 확인이 가능하다.
- fist, last 프로퍼티를 통해 첫 인덱스와 마지막 인덱스 값에 접근이 가능하다.
- firstIndex(of:)메서드를 사용해서 해당 요소의 인덱스를 확인 가능하다
- insert(_,at:) 메서드를 통해서 특정한 인덱스에 요소 추가가 가능하다.
- append(_:)를 통해서 맨 뒤에 요소 추가가 가능하다.
- remove(_:)를 통해서 해당 요소를 삭제한 후 반환을 받을 수 있다.
- 순서없이 키와 값의 쌍으로 구성되는 컬렉션이다.
- 딕셔너리 안에는 키가 하나이거나 여러개일 수 있다.
- let, var를 통해서 변경 유무 지정이 가능하다.
- isEmpty를 통해서 비어있는 여부 확인이 가능하다.
- 딕셔너리에서 키는 유일해야 하되, 값은 유일하지 않다.
- 딕셔너리에서는 없는 키로 접근이 가능하다. 다만 nil을 반환받는다.
- 특정 키에 해당하는 값을 제거하려면 removeValue(forkey:)메서드를 사용한다. 키에 해당하는 값이 제거된 후 반환된다.
- 딕셔너리에서 삭제는 키의 값에 nil을 할당해주면 된다.
- 같은 타입의 데이터들을 순서없이 하나의 묶음으로 저장한다.
- 순서가 중요하지 않거나 고유한 값이어야 하는 경우 사용한다.
- 해시 가능한 값이 들어와야 한다.
- 배열과 다르게 축약형이 없다.
- isEmpty를 통해서 비어있는 여부 확인이 가능하다.
- count 프로퍼티로 갯수 접근이 가능하다.
- insert(_:) 메서드를 통해서 요소 추가가 가능하다.
- remove(_:)를 통해서 요소를 삭제하고 반환 받을 수 있다.
- sorted()메서드를 통해서 정렬된 배열을 반환할 수 있다.
- 연관된 항목들을 묶어서 표현할 수 있는 타입이다.
- 딱 정해진 값들만 열거형에 속할 수 있다.
- 제한된 선택지를 주고 싶을 때, 정해진 값 외에 입력받기 싫을 때, 예상된 입력 값이 한정되어 있을 때 열거형을 사용한다.
- 각 항목에 원시값(rawValue) 형태로 실제 값을 가질 수 있다.
- 연관 값을 사용해서 새로운 기능을 발현할 수 있다.
- switch구문과 연계하여 기능을 나타낼 수 있다.
- CaseIterable 프로토콜을 준수하여 allCases 프로퍼티를 통해 모든 케이스 컬렉션 생성이 가능하다.(배열이다)
- Comparable 프로토콜을 준수하여 케이스 별 비교가 가능하다. 앞에 위치한 케이스가 더 작은 값이 된다. 연관값이 있는 경우 프로토콜 준수가 되지 않는다.