Created
October 24, 2015 04:05
-
-
Save takaheraw/211b5fa6e06be1e8d4ae to your computer and use it in GitHub Desktop.
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
protocol RentalCar { | |
var name:String { get } | |
var passengers:Int { get } | |
var pricePerDay:Float { get } | |
} | |
class Compact : RentalCar { | |
var name = "VW Golf" | |
var passengers = 3 | |
var pricePerDay:Float = 20 | |
} | |
class Sports : RentalCar { | |
var name = "Porsche Boxter" | |
var passengers = 1 | |
var pricePerDay:Float = 100 | |
} | |
class SUV : RentalCar { | |
var name = "Cadillac" | |
var passengers = 8 | |
var pricePerDay:Float = 75 | |
} | |
class Minivan : RentalCar { | |
var name = "Chevrolet" | |
var passengers = 14 | |
var pricePerDay:Float = 40 | |
} | |
class CarSelector { | |
class func selectCar(passengers:Int) -> String? { | |
var car:RentalCar? | |
switch (passengers) { | |
case 0...1: | |
car = Sports() | |
case 2...3: | |
car = Compact() | |
case 4...8: | |
car = SUV() | |
case 9...14: | |
car = Minivan() | |
default: | |
car = nil | |
} | |
return car?.name | |
} | |
} | |
let passengers = [1 ,3, 5] | |
for p in passengers { | |
print("\(p) passengers: \(CarSelector.selectCar(p))") | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment