Created
February 18, 2019 11:19
-
-
Save imufun/d9c52da15709721ebd3299cc3c5ca651 to your computer and use it in GitHub Desktop.
TypeCasting
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import Foundation | |
| //https://docs.swift.org/swift-book/LanguageGuide/TypeCasting.html | |
| class MovieList { | |
| var name : String | |
| init(name: String) { | |
| self.name = name | |
| } | |
| } | |
| class Movie: MovieList{ | |
| var director: String | |
| init( name: String, director: String) { | |
| self.director = director | |
| super.init(name: name) | |
| } | |
| } | |
| class Artist: MovieList{ | |
| var artist: String | |
| init(name: String, artist: String) { | |
| self.artist = artist | |
| super.init(name: name) | |
| } | |
| } | |
| let library = [ | |
| Movie(name:"Alita : Battel angle", director: "James Cameron"), | |
| Artist(name: "Rosa Salazar", artist: "Jennifer Connelly") , | |
| Movie(name:"Avater", director: "James Cameron"), | |
| Artist(name: "Leo", artist: "Alexzerder") , | |
| Movie(name:"Alita : Battel angle", director: "James Cameron"), | |
| Artist(name: "Rosa Salazar", artist: "Jennifer Connelly") , | |
| Movie(name:"Avater", director: "James Cameron"), | |
| Artist(name: "Leo", artist: "Alexzerder"), | |
| Artist(name: "Leo", artist: "Alexzerder") | |
| ] | |
| var movieCount = 0 | |
| var artistCount = 0 | |
| for item in library { | |
| if item is Movie { | |
| movieCount += 1 | |
| } else if item is Artist{ | |
| artistCount += 1 | |
| } | |
| } | |
| for item in library{ | |
| if let movie = item as? Movie{ | |
| print("\(movie.name) & \(movie.director)") | |
| } | |
| print("-----------------------------------") | |
| if let artist = item as? Artist{ | |
| print("\(artist.name) \(artist.artist)") | |
| } | |
| } | |
| print("\(movieCount) \(artistCount)") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment