История изменений
Исправление red75prim, (текущая версия) :
классический пример уже неоправданно многословен. Зачем писать «if (x) … if (! x) …», когда можно просто «if (x) … else …»
Потому что там в первом if (!x)
иксу присваивается значение. Второй if проверяет что значение таки присвоилось (fetchFromServer может вернуть пустой optional).
И если забыть про второй if, то можем получить UB при дереференсе пустого optional’а.
Исходная версия red75prim, :
классический пример уже неоправданно многословен. Зачем писать «if (x) … if (! x) …», когда можно просто «if (x) … else …»
Потому что там в первом if (!x)
иксу присваивается значение. Второй if проверяет что значение таки присвоилось (fetchFromServer может вернуть пустой optional).