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

Является ли этот ответ от компилятора действительным?

Следующий код вызывает ошибку. Я не мог найти никакой информации об этом в ссылке. Отсутствие пробелов в правой части оператора '=' является ошибкой.

let names =["Anna", "Alex", "Brian", "Jack"]

Любая другая комбинация этого синтаксиса компилируется. Кто-нибудь знает, действительно ли это действительно недействительный синтаксис за то, что мы знаем о Swift прямо сейчас?

EDIT: Ответ на ошибку: Prefix/postfix '=' is reserved

ОТВЕТ: Этот отрывок, кажется, отвечает на мой вопрос. Я просто не мог найти его в течение долгого времени:

Пробелы вокруг оператора используются для определения того, оператор используется как префиксный оператор, постфиксный оператор или двоичный оператор. Это поведение суммируется в следующих правилах:

Если оператор имеет пробелы вокруг обеих сторон или вокруг них стороны, он рассматривается как двоичный оператор. В качестве примера, + оператор в + b и a + b рассматривается как двоичный оператор. Если оператор имеет пробелы только с левой стороны, он рассматривается как префикс унарного оператора. В качестве примера оператор ++ в ++ b рассматривается как префикс унарного оператора. Если оператор имеет пробелы на только с правой стороны, он рассматривается как постфиксный унарный оператор. Как Например, оператор ++ в ++ b рассматривается как постфикс унарный оператор. Если оператор не имеет пробелов слева, а соблюдается сразу же точкой (.), он рассматривается как постфиксный унарный оператор. Например, оператор ++ в ++. B рассматривается как постфикс унарный оператор (a ++. b, а не ++.b).

Отрывок из: Apple Inc. "Быстрый язык программирования". интерактивные книги. https://itun.es/us/jEUH0.l

4b9b3361

Ответ 1

Добавьте пробел после =. (=[ выглядит слишком грустно, чтобы быть оператором.) Вероятно, он видит =value как использование префикса (возможно, но не реализовано).

Swift не является полностью белым-агностиком, например C... в частности, он использует пробелы, чтобы отличать префикс от постфиксных операторов (потому что ++i++ в C - некоторая грамматическая нечетность). Но это не смехотворно строго о пропущенных словах, как Python.

Ответ 2

Попробуйте добавить пробел между = и [.

Когда знак равенства находится непосредственно перед скобкой, компилятор предполагает, что вы пытаетесь выполнить префиксную операцию в массиве.

Ответ 3

Поместите пробел между = и [,

let names = ["Anna", "Alex", "Brian", "Jack"]

Кажется, что =[ является зарезервированным оператором.