is, as,as?,as!,as?!

hankyulee·2021년 9월 24일
0

기타

목록 보기
3/19
post-thumbnail

is 는 타입이 같은지 알아낸다.
또는 클래스일 경우 서브클래스 인지 알아낸다.


업캐스팅하여 cats변수에 인스턴스들을 담고 타입을 확인한다.
맨위의 if 절에서 모두 Cat클래스에 상속되므로 채택된다. 저 if 절이 없을경우 출력은 다음과같다.

as

타입과 호환된다면 그 타입으로 캐스팅된 인스턴스 반환.
as: upcasting,패턴 매칭(switch)
as?: downcasting 실패시 nil
as!: downcasting 실패시 오류
다음을 통해서 확인가능.

type casting for any,anyobject

as와 as? as! - 차이점은 실행되는 시간의 차이
as는 컴파일타임에, as?와 as!는 런타임에 실행된다고 한다.
as - 업캐스팅과 패턴매칭(switch)에서만 사용할 수 있음.

  • switch에서 패턴매칭에 사용됨.
  • Student는 struct, Man은 class 이다. 둘 다에 사용가능.
  • users는 [Any]

switch는 개발을 하면서 꽤 많이 사용된다. 특히 enum과 함께 많이 사용되는것을 보았다. 다음에는 enum과 switch를 공부해보자.

참고)https://babbab2.tistory.com/127,
https://zeddios.tistory.com/265,
강의

0개의 댓글