타입 캐스팅을 수행할 때 일반적으로 상속 관계에 있는 클래스끼리만 캐스팅이 가능하지만, Any와 AnyObject 타입을 사용할 경우, 상속 관계에 있지 않아도 타입 캐스팅을 할 수 있다.
모든 타입을 저장한다
var things: [Any] = []
things.append(1)
things.append(1.0)
things.append("sodeul")
things.append(false)
things.append(Human.init()))
things.append({ print("I am Sodeul!") })
모든 클래스 타입을 저장한다
var things: [AnyObject] = []
things.append(1) // 에러
things.append(1.0) // 에러
things.append("sodeul") // 에러
things.append(false) // 에러
things.append(Human.init()))
things.append({ print("I am Sodeul!") }) // 에러
for thing in things {
switch thing {
case _ as Int:
print("Int Type!")
case _ as Double:
print("Double Type!")
case _ as String:
print("String Type!")
case _ as Human:
print("Human Type")
case _ as () -> ():
print("Closure Type")
default:
print("something else")
}
}
Any 타입에서 다른 타입의 멤버에 접근하고 싶을때 사용
var name: Any = "Sodeul"
if var name = name as? String {
name.append("-_-")
}
참조
개발자 소들이