Предположим, что у меня есть экземпляр класса Person
с именем Person
с именами first
и last
, которые являются необязательными строками.
Теперь я хочу построить строку fullName
, содержащую либо только их первое или последнее имя (если это все, что доступно), либо если у нас есть оба их имени и фамилии с пространством посередине.
var fullName : String?
if let first = person.first {
name = first
}
if let last = person.last {
if name == nil {
name = last
} else {
name! += " " + last
}
}
или
var name = ""
if let first = person.first {
name = first
}
if let last = person.last {
name = name.characters.count > 0 ? name + " " + last : last
}
Я понимаю варианты, но я не могу полностью обернуть голову вокруг "быстрого" способа мышления о них и безопасного развертывания. Мы просто должны вложить if let
? Есть ли более чистый, более "быстрый" способ сделать это? Нил coalescing кажется подходящим, но я не могу придумать, как применить его в этом сценарии. Я не могу не чувствовать, что я делаю необязательную конкатенацию строк чрезмерно сложным способом.