Если я правильно понимаю вопрос, это недоразумение, и оно не имеет ничего общего с совместным использованием дополнительных опций и операторов сдвига
Если вы хотите использовать синтаксис if let x = y {
, тогда это допустимо только в том случае, если y
объявляется необязательным, поскольку код бессмыслен, если y
никогда не равен nil, потому что тогда вы можете безопасно использовать y
напрямую.
Когда дело доходит до операторов сдвига, то ни одно значение не может быть необязательным, насколько язнаю, что ваш пример немного надуманный.
var y: Int?
if someCondition {
y = 42
}
if let x = y {
doStuff(x)
} else {
print("y was never set")
}
или разверните со значением по умолчанию
var y: Int?
let x = (y ?? 0) + 42