Schulung_iOS/Models.swift
2025-10-21 11:20:10 +02:00

48 lines
1.2 KiB
Swift

import Foundation
protocol Vehicle {
var name: String { get }
var color: String { get set }
}
struct Train: Vehicle, CustomStringConvertible , CustomLocalizedStringResourceConvertible {
var name: String
var color: String
var delay: Int
var content: Bike
var description: String { "Zug \(name) mit \(content) hat \(delay) Minuten Verspätung" }
var localizedStringResource: LocalizedStringResource {
"Train \(name) with \(content) has ^[\(delay) minute](inflect: true) delay."
}
// init(describing obj: CustomLocalizedStringResourceConvertible){
// self.init(describing: obj.localizedStringResource)
// }
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())
}
}