Они отличаются в Swift 3. В этом случае:
guard let foo = bar, let qux = taco else {
вы говорите «необязательным UnWrap бар в обув. В случае успеха, необязательно разворачивать тако в qux.Если успешно продолжить. Else ... "
С другой стороны, это:
guard let foo = bar, qux = taco else {
говорит «необязательным разворачивать бар в обув. Как логический, расценивает заявление присваивания qux = taco
"Поскольку операторы присваивания не возвращать Booleans в Swift, это ошибка синтаксиса.
Это изменение позволяет гораздо более гибким guard
заявления, так как вы можете перемешивать дополнительно развёртки и булевы по всей цепочке В Swift 2.2 вам пришлось развернуть все, а затем выполнить все булевы проверки в конце в предложении where
(что иногда не позволяло выразить условие).
Второй вариант разрешен в Swift 2, но не больше в Swift 3. –