В таблицах приоритетов во многих документах Ruby перечисляются двоичные арифметические операции как имеющие более высокий приоритет, чем их соответствующие составные операторы присваивания. Это заставляет меня поверить, что подобный код не должен быть действительным кодом Ruby, но это так.
1 + age *= 2
Если бы правила приоритетов были правильными, я ожидал бы, что приведенный выше код будет заключен в скобки следующим образом:
((1 + age) *= 2) #ERROR: Doesn't compile
Но это не так.
Так что же дает?