Ответ 1
По крайней мере, одна причина заключается в том, чтобы быть более безопасным в операциях сравнения. При написании на C, Objective-C и т.д. Сколько раз вы написали это:
if (x = 2)
вместо
if (x == 2)
В новых версиях компиляторов были введены специальные предупреждения для вышеуказанного случая, но ничего себе не было, что один из них без знака равнялся тому, что в моем коде на протяжении многих лет вызывали трудно идентифицируемые ошибки.
С системой типа Swift это будет менее проблематичным, поскольку возвращаемое значение, скорее всего, не будет соответствовать протоколу BooleanType, но если это произойдет (if x = false
), вы все равно можете столкнуться с этими ошибками. Многие из Swift предназначены для устранения распространенных причин ошибок, с которыми столкнулись люди, включая этот.
Это указано в книге Swift Programming Language, под "Основные операторы" :
В отличие от оператора присваивания в C и Objective-C, присваивание оператор в Swift сам не возвращает значение. Следующие оператор недействителен:
if x = y { // this is not valid, because x = y does not return a value }
Эта функция запрещает использование оператора присваивания (=) авария, когда на самом деле предназначено равное оператору (==). От если x = y недействителен, Swift помогает избежать таких ошибки в вашем коде.