튜플 : 여러 가지의 자료형인 값들을 한 번에 묶어주는 기능. 여러 값을 하나의 개체에 일시적으로 묶음.
ex) let myTuple = (10, 12.1, "Hi")
Swift에서 언더바는 어떤 값을 무시할 때 사용함.
옵셔널(Optional) : 값을 가질 수도 있고 갖지 않을 수도 있음. 비어있다는 표현으로 nil을 사용
ex) var x : Int? = 10
print(x)
출력은 optional(10)이 출력된다. 자료형 선언 뒤에 ?나 !를 사용하는데 보통은 ?를 많이 쓴다.
optional 변수를 사용하면 변수에 값을 집어넣지 않아도 일단 에러가 발생하지 않고 출력해보면 nil이라고 값이 찍히게 된다.
변수의 형을 변환하여 출력할 때에는 변수에 괄호를 씌우고 앞에 바꾸고 싶은 자료형을 갖다붙인다.
Ex) print(Int("15.3")) // 15.3이라는 문자형 변수를 정수형으로 바꾸어 출력한다. 결과값은 15가 출력된다(반올림)
옵셔널 변수에 값이 있으면 옵셔널로 래핑되었다(wrapped) 라고 한다.
이를 다시 풀어줄 때에는 강제언래핑이라고 하는데,
맨 아래 두 줄을 언래핑해서 x 값을 초기화해도 다시 옵셔널 변수가 되어서 optional(12)가 결과로 나온다.
그 다음 아랫줄 y에 옵셔널 변수를 집어넣을 수 없기 때문에 이 또한 언래핑 시키면 y 값을 12라고 하도록 에러를 수정할 수 있다.
옵셔널 바인딩의 세 가지 종류가 있는데,
1. 다른 변수로 초기화 해서 언래핑 하는 방식
2. 같은 변수로 초기화 해서 언래핑 하는 방식
ex) if let x = x
3. 위 설명대로 if let x 만 쓰는 방식
?가 아닌 !로 옵셔널 변수를 만들었다면 일반형으로 쓰려고 할 때 벗겨진다.
보통 초기값을 어떤 걸 넣을지 잘 모르겠을 때 !를 넣었다가 나중에 초기화하여 변수에 값을 지정하면 자연스레 풀린다는 이야기다.
nil일 때는 풀리지 않음. 이를 줄여서 IUO라고 한다.
Any 형은 타입을 까다롭게 체크하는 Swift 특성 상 잘 사용하지 않는다.
AnyObject는 모든 클래스 타입(객체)만 표현할 수 있다. 구조체, 열거형, 기본 타입 등은 사용할 수 없다.
연산자
많이 사용하는 연산자
1. 대입 =
2. 산술 +, -, *, /, %
3. 복합 대입 +=, -=, *=, /=, %=
4. 비교 ==, !=, <, <=, >, >=
5. 논리 &&, ||, !
6. 옵셔널 ?, !, ?? ?는 옵셔널 선언, !는 강제 언래핑, ??는 nil 병합 연산자
7. 범위 연산자 (..., ..<) ...는 닫힌 범위, ..<는 반열린 범위
**옵셔널 형 변수는 자료형에 일반형으로 초기화시켜도 옵셔널(Optional) 변수가 된다.
**Swift 3 버전부터 증가연산자 ++과 감소연산자 --는 지원하지 않게 됐다.
대신 x+=1 이나 x = x + 1을 사용한다.
?? : nil 병합연산자
옵셔널 변수의 값이 nil이면 ?? 다음 값으로 할당됨.
타입 검사 Is 연산자
제어문
'코딩공부' 카테고리의 다른 글
iOS 1주차 (0) | 2025.09.01 |
---|---|
가상 메모리 (0) | 2025.05.13 |
프로세스 메모리 구조, Program Counter, NULL, Garbage Collector, Stack Overflow (0) | 2025.05.05 |
물리 메모리 (1) | 2025.04.29 |
정규표현식, XML과 JSON, Tokenizer, Lexer, Parser, AST (2) | 2025.04.29 |