Подтвердить что ты не робот

В чем причина того, что оценка задания Swift была недействительной?

Этот вопрос касается ИСТОРИЯ (не ваши текущие мнения по этому вопросу).

При чтении сообщения об отбрасывании поддержки операторов инкремента/декремента для Swift я читаю такой текст: "Swift уже отклоняется от C тем, что операции =, + = и другие операции, подобные присваиванию, возвращают Void (по ряду причин)".

Итак, в какой-то момент в прошлом разработчики сознательно решили оценить присвоения по умолчанию по некоторым причинам.

И я ищу те исторические (сейчас) причины. В значительной степени, поскольку этот поток посвящен историческим причинам Scala.

4b9b3361

Ответ 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 помогает избежать таких ошибки в вашем коде.