2015-09-27 2 views
0

ruby 1.8.7 НаСинтаксическая ошибка при использовании <<, но не при использовании + =

Почему это нормально:

string += method "value" 

Но это поднять синтаксическую ошибку:

string << method "remove reviewer" 

То же самое, поведение в новых версиях рубина?

+0

Да, такое же поведение в более высокой версии Ruby. (Я тестировал Ruby 2.2) –

ответ

1

Вы можете объяснить это поведение разными Operator Precedence из << и =+ и вызовами методов.

Рубин читает свои первые примеры, как:

string += (method "value") 

но второй один как:

(string << method) "remove reviewer" 

ИМА это хорошая практика, чтобы использовать скобки для вызова метода, даже если Руби не нужен во многих случаях. Это делает код более читаемым и менее подверженным ошибкам:

string += method("value") 
string << method("remove reviewer") 
1

Да, такое же поведение в более высокой версии Ruby. (Я тестировал Ruby 2.2).

Это из-за Ruby's operator precedence.

Чтобы обойти эту проблему, вы можете использовать круглые скобки в случае <<:

string << method("remove reviewer") 

Затем он должен работать и не получите синтаксическую ошибку.

Или, чтобы сделать его последовательным, вы можете использовать скобки для обоих из них:

string += method("value") 
string << method("remove reviewer") 

Infact, настоятельно рекомендуется использовать круглые скобки () для вызовов методов, чтобы избежать таких ситуаций, как тот, который вы» re спрашивайте. Для получения дополнительной информации отметьте this post.

Смежные вопросы