Как использовать оператор сдвига с неявной / принудительной распаковкой в ​​Swift - PullRequest
0 голосов
/ 19 февраля 2019

Я пытался использовать оператор сдвига и развертывание в куске кода, так как я изучаю Swift (FYI, только начинающий), поэтому я пробую несколько вещей, но я застрял с этим оператором.Рассматривая различные темы об операторах сдвига, я пришел к выводу, что, возможно, мне придется перегрузить мои операнды и затем использовать их соответствующим образом.

Мой код:

var p : Int! 
p = 24 >> 2;
if let msg = p{ print (msg); } 
else { print("abcd"); }

Пожалуйста, помогите!А также совет, если мое мышление правильно или нет.

Все, чего я хочу добиться - это то, что оба могут работать вместе ... Если есть какой-то способ ... xD

1 Ответ

0 голосов
/ 19 февраля 2019

Если я правильно понимаю вопрос, это недоразумение, и оно не имеет ничего общего с совместным использованием дополнительных опций и операторов сдвига

Если вы хотите использовать синтаксис 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
...