помогите разобрать код и привести его в читабельный вид
увидел такую логику в коде не совсем понимаю что она делает и как ее перевести в обычное сравнение if else или что то подобное
var days = isOpened ? "" : drinkAward.award.day! > 0 ? "\(drinkAward.award.day!) дн." : ""
буду очень благодарен если напишите замену этому чудовищу
Ответы (1 шт):
Тернарник это if else в символах ( condition ? true_part : else_part )
Например:
Если будет дождь ? то возьми зонт : зонт брать не нужно
Поэтому можно оставить в тернарниках но разнести на 2 строки чтобы было понятно.
var whenClosed = drinkAward.award.day! > 0 ? "\(drinkAward.award.day!) дн." : ""
var days = isOpened ? "" : whenClosed
Или переделать на обычные if
var days = ""
if (!isOpened) {
if (drinkAward.award.day! > 0) {
days ="\(drinkAward.award.day!) дн."
}
}
Что соответсвенно можно записать еще короче:
var days = ""
if (!isOpened && drinkAward.award.day! > 0) {
days = "\(drinkAward.award.day!) дн."
}
Или в тех же тернарниках:
var days = (!isOpened && drinkAward.award.day! > 0) ? "\(drinkAward.award.day!) дн." : ""
Так же, если не понятно что делает восклицательный знак в конце drinkAward.award.day! - это своеобразное утверждение что переменная существует
var myString:String?
myString = "Hello, Swift!"
if myString != nil {
print(myString) //напечатает:Optional("Hello, Swift!")
// принудительное расширение
print(myString!) //напечатает:Hello, Swift!
}else{
print ("значение myString равно нулю")
}
Ну и если не понятна конструкция строк: "\(вставит значение выражения в строку)"
например:
print("1 + 2 = \(1+2)") //напечатает: 1 + 2 = 3