class MediaItem {
var name : String
init(name: String) {
self.name = name
}
}
class Movie : MediaItem {
var director : String
init(name: String, director: String) {
self.director = director
super.init(name: name)
}
}
class Song : MediaItem {
var artist : String
init(name: String, artist : String){
self.artist = artist
super.init(name: name)
}
}
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
}
}
/* item(library를 포함하는)이라는 임시상수에서
item이 Movie가 맞다면 movieCount를 1씩 증가시키라.
아닐 경우, item이 Song이 맞다면 songCount를 1씩 증가시키라.
*/
print("Media library contains \(movieCount) movies and \(songCount) songs.")
의문점 : if문에서는 지금까지 항상 맞다면이라는 조건을 == 으로 써왔다.
근데 왜 여기선 is라고 표현을 해준것이 왜 아래와 같은 오류가 발생하게될까?
답변 :