Published 2020. 9. 7. 15:23
728x90
반응형

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/

 

[LECTURE] 05. Any, AnyObject, nil (💎생각해보기) : edwith

 생각해보기   ▶ 사람이 사용하는 숫자 '0'은 '없음'이라는 의미를 갖고있습니다. 프로그래밍에서 0은 없음을 나타낼 수 있을까요? ▶ 0이 있는데 nil 이라는 표현은 왜 존재... - 부스트코스

www.edwith.org

 

728x90
반응형
복사했습니다!