Документация

Приоритет и ассоциативность

Оператор приоритета дает некоторым операторам более высокий приоритет по сравнению с остальными. В выражении сначала применяются эти операторы, затем все остальные.

Оператор ассоциативности определяет то, как операторы одного приоритета сгруппированы вместе (или ассоциированы друг с другом), то есть либо они сгруппированы слева, либо справа. Думайте об этом как “они связаны с выражением слева” или “они связаны с выражением справа”.

Это важно учитывать приоритет и ассоциативность каждого оператора, когда работаете с порядком, в котором должно считаться выражение. Вот простой пример. Почему данное выражение имеет равенство 17?

2 + 3 % 4 * 5
// это равно 17

Если вы прочитаете это выражение строго слева направо, то вы можете ожидать действия в таком порядке:

  • 2 плюс 3 равняется 5
  • 5 остаток от деления на 4 равен 1
  • 1 умножаем на 5 и получаем 5

Однако, как не крути, правильный ответ равен 17, а не 5. Операторы более высокого приоритета выполняются раньше операторов более низкого приоритета. В Swift, как и в C, оператор умножения (*) и оператор остатка (%) имеют более высокий приоритет, чем оператор сложения (+). В результате они оба вычисляются раньше, чем вычисляется оператор сложения.

Однако оператор умножения и оператор остатка имеют один и тот же приоритет по отношению друг к другу. Для выяснения точного порядка вычисления вы должны обратиться к их ассоциативности. Операторы умножения и остатка оба ассоциируются с выражением слева от себя. Представляйте это, как будто вы добавили скобки вокруг этих частей выражения, начиная слева:

2 + ((3 % 4) * 5)

(3 % 4) равно 3, значит можно записать:

2 + (3 * 5)

(3 * 5) равно 15, и значит мы можем записать:

2 + 15

Таким образом наш конечный результат равен 17.

Заметка

Правила приоритета и ассоциативности операторов Swift проще и более предсказуемые чем в C или Objective-C. Однако это означает, что они ведут себя не так же как они вели себя в этих C-языках. Будьте внимательны с тем, как ведут себя операторы взаимодействия при переносе кода в Swift.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Если вы создавали аккаунт ранее...

Если Вы создавали аккаунт на старой версии сайта, а сейчас не можете зайти, то Вам нужно сделать следующее:

  1. Нажать "Забыли пароль?"
  2. Указать Ваш email в появившейся форме и нажать "Сбросить пароль"
  3. Вам на почту придет письмо с уникальной ссылкой, по которой вы сможете сбросить старый пароль и войти в свой аккаунт на новой версии сайта

Далее вы сможете заходить на сайт по email и паролю.

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: