Резервное копирование на секунду и выполнение каждого требования по отдельности
Один инициализатор примет аргумент Double, представляющий высоту в дюймах.
Другой инициализатор примет аргумент Double, представляющий высоту в сантиметрах.
Каждый инициализатор должен принимать переданное значение и использовать его для установки свойства, соответствующего переданной единице измерения.
Что может выглядеть примерно так ...
init(inches:Double) {
heightInInches = inches
}
init(centimeters:Double) {
heightInCentimeters = centimeters
}
Затем следует установить другое свойство путем вычисления правильного значения из переданного значения. Подсказка: 1 дюйм = 2,54 см.
Который может выглядеть больше так ...
init(inches:Double) {
heightInInches = inches
heightInCentimeters = inches * 2.54
}
init(centimeters:Double) {
heightInInches = centimeters / 2.54
heightInCentimeters = centimeters
}
Это тогда позволяет вам установить свойства как let
и избежать всех проблем с мутацией struct
struct Height{
let heightInInches: Double
let heightInCentimeters: Double
init(inches:Double) {
heightInInches = inches
heightInCentimeters = inches * 2.54
}
init(centimeters:Double) {
heightInInches = centimeters / 2.54
heightInCentimeters = centimeters
}
}
который лучше оставить на следующий день;)