Простой ответ заключается в том, что оператор приравнивания, например ==
, !=
или любые операторы сравнения, не имеет ничего общего с развертыванием необязательного значения с точки зрения компилятора.
A guard
оператор имеет 2 общих варианта использования. Одним из них является защита от значения boolean
, которое создается оператором сравнения или сравнения, как в следующем примере:
guard ["foo", "bar"].contains("foo") == true else { return }
guard 10 > 5 else { return }
В то время как другая роль оператора guard
заключается в развертывании необязательных параметров, который записан в синтаксисе guard let
или guard var
. Например:
guard let unwrappedValue = anOptionalValue else { return }
Этот указанный синтаксис c позволяет компилятору узнать, что вы пытаетесь развернуть значение, и в результате вы получите развернутое значение, если развертывание выполнено успешно.
Конечно, при создании другой переменной / константы может показаться "уродливым", это путь к go в Swift.