#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.
Комментариев нет:
Отправить комментарий