Я начал изучать swift и найти урок под названием двухфазная инициализация. Пример приведен для структуры, и он правильно работает для нее. Пример для типа структуры приведен ниже:
import UIKit
struct NuclearRocket{
var meters: Double
var liters: Double
init(meters: Double, liters: Double){
self.meters = meters
self.liters = liters
}
init(ft: Double, gallon: Double){
let convertedMeters = ft / 3.28
let convertedLiters = gallon * 3.78
self.init(meters: convertedMeters , liters: convertedLiters)
}
}
var rocket = NuclearRocket(meters: 20, liters: 20)
rocket.liters
rocket.meters
var newRocket = NuclearRocket(ft: 2, gallon: 3)
newRocket.meters
newRocket.liters
Работает правильно и показывает точный результат. Но когда я заменяю struct на class (используя class NuclearRocket вместо struct NuclearRocket ), мой компилятор сказал мне, что:
Designated initializer for 'NuclearRocket' cannot delegate (with 'self.init'); did you mean this to be a convenience initializer?
Какая на самом деле разница между использованием класса и структуры в этом случае?