import Playgrounds import Foundation protocol Vehicle { var name: String { get } var color: String { get set } } struct Train: Vehicle { var name: String var color: String var delay: Int var content: Bike init( name: String = "ICE", color: String = "white", delay: Int = 0, @BikeBuilder content: @escaping () -> Bike ) { self.name = name self.color = color self.delay = delay self.content = content() } } struct Bike: Vehicle, CustomStringConvertible { var name: String var color: String var description: String { name + " is " + color } var price: some Equatable { "FREE" } static let trek = Bike(name: "Trek", color: "green") func emptyBasket() { print("emptied", Date()) } }