Optionals : optional Type에 대해 알아보자.
Optionals는 변수나 상수가 다른 타입으로 초기화될 때 값의 선택의 여지를 주는 것을 말한다.
아래 코드를 같이 살펴보도록 하자.
possibleNumber 상수는 자동 타입 추론에 의해 String 타입이다.
convertedNumber 상수는 String 타입을 Int 타입으로 초기화되었다.
위 코드는 컴파일 에러가 발생하지 않는데 그 이유는 possibleNumber 값이 모두 숫자로 변환이 가능하기 때문이다.
하지만, 해당 값에 문자가 일부 포함되어있으면 String 타입에서 Int 타입으로 타입 변환이 불가능하고 컴파일 에러가 발생할 것이다.
Swift는 이를 방지하기 위해 optional을 부여하는데 타입이 변환되는 convertedNumber는 Int 타입이 아니라 optional Int 타입이 되는 것이다.
만약에 문자가 포함되어 있더라도 optional을 고려하여 컴파일 에러가 발생하지 않고 실행된다.
이때는 적절하게 변환되지 않아서 해당 값에 'nil' 값을 임시로 부여하게 된다. (nil은 무엇인지 이따가 다루어 보자)
또한, 명시적으로 optional type을 사용하고 싶다면 변수나 상수 선언시 타입 뒤에 물음표(?)을 사용하면 된다.
var str1 : String?;
print(str1); //nil
그러면 위와 같이 str1 변수는 값이 초기화가 안 되었지만 optional String 타입이므로 임시로 nil 값을 넣고 출력하게 된다.
var n1 : Int?;
print(n1); //nil
n1 변수도 마찬가지이다.
var num1 : Int? = 404;
num1 = nil;
print(num1); //nil
위와 같이도 사용할 수가 있다.
//var num2 : Int;
//num2 = nil;
//print(num2);
다만, 위 코드처럼 물음표(?)을 사용하지 않는 변수에 대해서는 nil 값을 임의로 할당할 수는 없게 된다.
여기까지 이해했다면 뒤이어서 'nil'이 무엇인지 살펴보도록 하자.
nil : optional Type에 대한 임의값 nil
위 예제들을 이해했다면 nil값은 optional Type에 대해서 초기화되지 않았다면 임시로 nil값을 부여함을 알 수 있다.
위 예제를 보면 possibleNumber 상수가 모두 숫자로 구성되어 있으므로
convertedNumber 상수는 적절히 optional Int 타입으로 값이 초기화가 되어있을 것이다.
따라서, 적절히 초기화가 되었으므로 nil 값이 할당되지 않아서 아래 if문이 정상적으로 실행 될 것이다.
'Swift' 카테고리의 다른 글
[Swift] 변수는 최초 초기화 이후 타입이 고정된다. | Swift의 규칙 (1) | 2024.08.04 |
---|---|
[Swift] 기본 자료형에 대해서(Int, UInt, Double, Float, Bool, String, Character) (0) | 2024.07.28 |
[Swift] 주석 처리 방법(C++, Java의 주석 처리 방법 그대로 사용) (0) | 2024.07.28 |
[Swift] 문자와 문자열 모두 큰따옴표로("")만 정의할 수 있다. (0) | 2024.07.28 |
[Swift] 스위프트 시작하기(Swift 기본 문법, Type Annotations, String interpolation, Tuples) (0) | 2024.03.17 |