Here is swift tutorial link!Свифт Тип проверки
Пример является:
let library = [
Movie(name: "Casablanca", director: "Michael Curtiz"),
Song(name: "Blue Suede Shoes", artist: "Elvis Presley"),
Movie(name: "Citizen Kane", director: "Orson Welles"),
Song(name: "The One And Only", artist: "Chesney Hawkes"),
Song(name: "Never Gonna Give You Up", artist: "Rick Astley")
]
учебника сказать: Если перебирать содержимое этого массива, деталь вы получаете назад набираются, как MediaItem, а не как кино или песни.
И Тип проверки: Используйте оператор проверки типа (is), чтобы проверить, является ли экземпляр определенного типа подкласса. Оператор проверки типа возвращает true, если экземпляр имеет тип подкласса и false, если это не так.
var movieCount = 0
var songCount = 0
for item in library {
if item is Movie {
++movieCount
} else if item is Song {
++songCount
}
}
Так что, когда я получить деталь, тип элемента является MediaItem
но почему "пункт Movie" будет возвращать Trun ??
Поскольку фильм является подклассом MediaItem
Так что если я получить тип MediaItem
Это должно быть записано как «видеофильма пункт»
Среднее Фильм является подклассом MediaItem правильно?
но почему написано «пункт Movie»
Вы знаете, что '' Movie' и Song' являются подклассами 'MediaItem'? Или вам трудно понять концепцию наследования? – DarkDust
Вы понимаете мою проблему? –
Моя проблема в том, почему «item is Movie» является истинным, , потому что элемент является типом MediaItem not Тип фильма –