Страницы

Поиск по вопросам

вторник, 28 января 2020 г.

if else else else через тернарный оператор Swift

#swift #if #условия


Не могу вывести ниже изложенное выражение через тернарные операторы. Может кто-то
подскажет?

let child = 0    
let teenager = 12    
let youth = 16    
let adult = 25    
let mature = 40    
let elderly = 55    
let aged = 75    
let anton = 31    
var age: String    

if anton > aged {        
    age = "is aged"        
} else {        
    if anton > elderly {            
        age = "is elderly"            
    } else {            
        if anton > mature {                
            age = "is mature"                
        } else {                
            if anton > adult {                    
                age = "is adult"                    
            } else {                    
                if anton > youth {                        
                    age = "is youth"                        
                } else {                        
                    if anton > teenager {                            
                        age = "is a teenager"                            
                    } else {                            
                        if anton > child {                                
                            age = "is a child"                                
                        } else {                                
                            age = "was never born"                                
                        }                            
                    }                        
                }                    
            }                
        }            
    }
}
print("Anton \(age)")

    


Ответы

Ответ 1



не знаю зачем вам это let child = 0 let teenager = 12 let youth = 16 let adult = 25 let mature = 40 let elderly = 55 let aged = 75 let anton = 31 var age: String age = (anton > aged ? "aged" : (anton > elderly ? "is elderly" : (anton > mature ? "is mature" : (anton > adult ? "is adult" : (anton > youth ? "is youth" : (anton > teenager ? "is a teenager" : (anton > child ? "is a child" : "was never born"))))))) print("Anton \(age)")

Ответ 2



Никогда не стоит делать столько вложенных if - else, такой код не возможно читать. switch - case тоже не очень удобный вариант. Предлагаю такое решение, создаете словарь, где число это ключ и текст значение. Далее создаете цикл и проходите по каждому ключу и сравниваете его с нужным вам значением, как только ключ больше чем значение, значит выводите текст с данным ключем. var dictionary = [0 : "is a child", 12 : "is a teenager", 16 : "is youth", 25 : "is adult", 40 : "is mature", 55 : "is elderly", 75 : "is aged"] var age: String = "was never born" let anton = 31 var temp = 0 for (key, value) in dictionary { if anton > key && key > temp { age = value temp = key } } print("anton \(age)") Обратите внимание на переменную var temp = 0, она создана для того, чтобы сохранять максимальный возраст, который был найдет в словаре, так как словарь не гарантирует вам порядок элементов, в отличии от массива, вы не можете просто пройти по словарю и найти то значение, которое будет больше чем anton. Как только в цикле нашли элемент, который больше чем anton, сохраняем значение в temp и идем дальше по словарю, в поисках элемента который больше чем anton И больше чем temp.

Комментариев нет:

Отправить комментарий