Während ich die Swift-Dokumentation durchführe, habe ich gelernt, dass es zwei Möglichkeiten gibt, Variablen in einer Klasse zu "initialisieren".Initializer versus Default Eigenschaftenwerte
- Durch einfaches deklarieren Standardeigenschaftswerte:
class Vehicle {
var numberOfWheels = 4
var currentSpeed = 0.0
var description: String {
return "traveling at \(currentSpeed) per hour"
}
func makeNoise() {
print("vroom vroom")
}
}
class Bicycle: Vehicle {
var hasBasket = true
}
- Durch die init-Methode
class Vehicle {
var numberOfWheels: Int
var currentSpeed: Double
init(numberOfWheels: Int, currentSpeed: Double) {
self.numberOfWheels = numberOfWheels
self.currentSpeed = currentSpeed
}
var description: String {
return "traveling at \(currentSpeed) per hour"
}
func makeNoise() {
print("vroom vroom")
}
}
class Bicycle: Vehicle {
var hasBasket: Bool
init() {
hasBasket = true
super.init(numberOfWheels: 2, currentSpeed: 10)
}
}
Natürlich sind diese beiden Code Samples haben unterschiedliche Ergebnisse, aber im Allgemeinen scheint die erste Methode etwas sauberer zu sein (weniger Code).
Warum sollte ich das eine über das andere verwenden und sehen Sie irgendwelche Probleme oder Dinge, die in beiden Lösungen vereinfacht werden könnten?
Kleine Follow-up-Frage: zwischen der Verwendung von 'let Motorrad = Fahrzeug (..' und eine neue Unterklasse 'Motorrad: Fahrzeug'? –
Es kommt nur darauf an. Eine Regel, die ich im Allgemeinen befolge Unterklassen wenn ich gehe Verwenden Sie es mehr als einmal oder es ist am besten als sein eigenes Objekt für die Lesbarkeit und Code-Organisation dargestellt. Aber eine Menge davon ist einfach Stil und Vorliebe einzigartig für jeden Coder. Also, wenn ich eine Liste von verschiedenen Motorrädern zu vertreten hätte, eine zusätzliche Unterklasse Schicht könnte hier bevorzugt werden. –
Danke Ian. Wenn Sie Codierungsfehler im zweiten Codebeispiel sehen, können Sie gerne kommentieren (noch lernen) –