더울수록 시원한 맛 삐삐리 빼삐꼬
인스턴스의 타입을 확인하거나 어떠한 클래스의 인스턴스를 해당 클래스 계층 구조의 슈퍼 클래스나 서브 클래스로 취급하는 방법
아래 두개의 연산자는 값의 타입을 확인하거나 값을 다른 타입으로 변환하는데에 사용된다.
인스턴스의 타입이 어떠한 타입인지 확인할 수 있다.
...
let library = [
Movie(name: "기생충", director:"봉준호"),
Song(name: "Butter", artist:"BTS"),
Movie(name: "올드보이", director:"박찬욱"),
Song(name: "Wonderwall", artist:"Oasis"),
Song(name: "Rain", artist:"이적" )
]
var movieCount = 0
var songCount = 0
for item in library {
if item is Movie {
movieCount += 1
} else if item is Song {
songCount += 1
}
}
print("Media library contains \(movieCount) movies and \(songCount) songs")
// Media library contains 2 movies and 3 songs
특정 클래스 타입에 상수 또는 변수는 하위 클래스 인스턴스를 참조할 수 있다.
let library = [
Movie(name: "기생충", director:"봉준호"),
Song(name: "Butter", artist:"BTS"),
Movie(name: "올드보이", director:"박찬욱"),
Song(name: "Wonderwall", artist:"Oasis"),
Song(name: "Rain", artist:"이적" )
]
for item in library {
if let movie = item as? Movie {
print("Movie: \(movie.name), dir. \(movie.director)")
} else if let song = item as? Song {
print("Song: \(song.name), by \(song.artist)")
}
}
/*
Movie: 기생충, dir. 봉준호
Song: Butter, by BTS
Movie: 올드보이, dir. 박찬욱
Song: Wonderwall, by Oasis
Song: Rain, by 이적
*/
+추후 좀 더 정리 예정