Условно привязка к существующей недвижимости
Я ищу способ улучшить этот шаблон кода:
struct Struct {
let i: Int
init?(i: Int?) {
guard let unwrappedI = i else { return nil }
self.i = unwrappedI
}
}
Было бы неплохо удалить unwrappedI
временная переменная Какие-либо предложения?
2 ответа
Я бы сказал:
struct Struct {
let i: Int
init?(i: Int?) {
if i == nil {return nil}
self.i = i!
}
}
Я думаю, что это отражает ваше первоначальное желание уйти пораньше и избегает if/else
вы пытались избежать, без промежуточной переменной. Развернуть i
Просто разверните это! Нет необходимости if let
или же guard let
или что-нибудь из этого необычного материала.
(С другой стороны, я должен спросить: если прохождение nil
чтобы инициализатор считался неудачным, зачем предлагать принять опционально в первую очередь?)
Ну, я был уверен, что продумал это... Мне нужно спать.
struct Struct {
let i: Int
init?(i: Int?) {
if let i = i { self.i = i }
else { return nil }
}
}