0 이라는 숫자는 아무것도 없다고 생각한다.
하지만 프로그래밍에서는 0이라고 하면 아무것도 없는 것이 아닌 숫자 그대로 0 을 의미한다.
그럼 0 이 아닌 없다는 표현을 어떻게 해야할까? 라는 생각이 든다.
그래서 swift 에서는 nil 이란 것을 사용하는 것 같다.
다른 언어에서는 null 이란 것을 주로 사용하는 데 swift 에서는 nil 이라는 것을 사용한다고 한다.
이번에는 Any, AnyObject, nil 이란 것에 대해서 공부했다.
1. Any
Swift 의 모든 타입을 지칭하는 키워드
var someAny: Any = 100
someAny = "어떤 타입도 수용 가능"
someAny = 123.12
================= 출력 결과 =================
100
어떤 타입도 수용 가능
123.12
모든 타입을 지칭한다고 하지만 Any 타입에 Double 형 자료가 들어있다고 하더라도 타입이 다르기 때문에
Double 타입의 변수에 Any 타입의 변수를 할당할 수 없다고 한다.
//MARK: - Any
let someDouble: Double = someAny
================= 출력 결과 =================
error: study04.playground:11:26: error: cannot convert value of type 'Any' to specified type 'Double'
let someDouble: Double = someAny
^~~~~~~
as! Double
에러 메시지를 확인해보면 Any 타입의 값을 Double 타입의 값으로 바꿀 수 없다는 메시지가 출력된다.
그리고 아래에 보면 as! Double 라는 연산자를 통해서 Double 타입으로 변환해주라는 내용도 같이 출력됬다.
as 라는 연산자를 통해 다른 타입으로 변환할 수 있다고 하는데 따로 공부해서 정리해야겠다.
2. AnyObject
모든 클래스 타입을 지칭하는 프로토콜
클래스와 프로토콜에 대해서는 차후에 공부할 예정이다.
//MARK: - AnyObject
class SomeClass {}
var someAnyObject: AnyObject = SomeClass()
print(someAnyObject)
================= 출력 결과 =================
__lldb_expr_5.SomeClass
3. nil
없음을 의미하는 키워드
다른 언어에서의 Null, null, NULL 등과 유사한 표현으로 사용한다.
//MARK: - nil
someAny = nil
someAnyObject = nil
================= 출력 결과 =================
error: study04.playground:24:11: error: 'nil' cannot be assigned to type 'Any'
someAny = nil
^
error: study04.playground:25:17: error: 'nil' cannot be assigned to type 'AnyObject'
someAnyObject = nil
^
someAny 은 Any 타입이고, someAnyObject 는 AnyObject 타입이기 때문에 nil 을 할당할 수 없다는 메시지가 나온다.
nil 은 옵셔널이란 부분에서 다룬다고 한다.
옵셔널이란 무엇인지 공부하면서 nil 에 대해서 다시 공부해봐야할 것 같다.
- 참고 사이트 -
www.edwith.org/boostcamp_ios/lecture/11201/
'iOS > Swift' 카테고리의 다른 글
[Swift] 6. 함수 기본 (func) (0) | 2020.09.08 |
---|---|
[Swift] 5. 컬렉션 타입 (Array, Dictionary, Set) (0) | 2020.09.08 |
[Swift] 3. 기본 데이터 타입 (0) | 2020.09.07 |
[Swift] 2. 상수와 변수 (0) | 2020.08.31 |
[Swift] 1. 명명법, 콘솔 로그, 문자열 보간법 (0) | 2020.08.31 |