반응형

 

Any

Any는 Swift의 모든 데이터 타입을 사용할 수 있다.

 

변수 또는 상수의 데이터 타입이 Any로 지정되어 있다면 그 변수 또는 상수에는 어떤 종류의 데이터 타입이든지 상관없이 할당할 수 있다!

일반적으로 정수형으로 선언한 변수나 상수는 정수형 데이터를 저장 후에 정수형 이외의 데이터 타입을 저장하려고 하면 오류가 발생한다.

아래 코드는 정수형 변수 something에 100을 할당 후 문자열 "Glasses"를 저장한 것이다. 당연히 오류 발생.

 

var something: Int = 100
something = "Glasses" // 오류 발생
print(something)

 

하지만 Any타입에서는 뭐든지 가능하다. 아래 코드는 Any타입인 something 변수에 정수형, 문자열, 소수형 값을 할당했다.

var something: Any = 100
print(something) // 100 출력
 
something = "IPhone"
print(something) // IPhone 출력
 
something = 1.123
print(something) // 1.123

 

NOTE

Any는 될 수 있으면 사용하지 않는 것을 추천한다. 타입에 상당히 엄격한 Swift의 특성 상 Any 또는 AnyObject로 선언된 변수의 값을 가져가 쓰려면 매번 타입 확인 및 변환을 해줘야 하는 불편함이 있을뿐더러 예기치 못한 오류의 위험을 증가시키기 때문이다.

앞서 타입 추론 때도 설명했지만 타입은 될 수 있는 한 명시하는 것이 좋다.


nil

nil은 Any처럼 특정 타입이 아니라 '없음'을 나타내는 키워드이다.

 

var nilTest: Int= 100
// nillTest 변수는 졍수형 타입 100을 저장하고 있다.
nilTest = nil
// nilTest 변수는 아무런 값도 저장하지 않고 있다.

 

nil은 non-optional 변수나 상수에서는 사용할 수 없다. 만약 상수나 변수가 특정 조건에서 값이 없는 상태에서 작동해야 하는 경우가 있다면 항상 optional 변수로 선언하자.

만약 값을 할당하지 않고 optional 변수로 선언하면 변수는 자동적으로 nil로 세팅된다.

 

var nilTest: Int// 아무 것도 저장이 되지 않은 nil 상태

 

다른 프로그래밍 언어를 해 본 사람은 null값이라고 생각하면 편할 것 같다. 변수나 상수에 값이 없는 경우, 즉 nil이면 해당 변수나 상수에 접근했을 때 잘못된 메모리 접근으로 런타임 오류가 발생한다.

잘못된 메모리에 접근하여 발생하는 런타임 오류는 Null Pointer Exception 이라고 불린다.

 

반응형

+ Recent posts