В Ruby всеки оператор има предимство пред извикванията на метод, напр. операторите се оценяват първо.
Въпреки това примерът Math.sqrt 2 + 2
е добра илюстрация за това колко трудно за четене и неинтуитивно може да бъде пропускането на скоби. Може да се очаква Math.sqrt(2) + 2
да бъде оценен тук.
Когато попаднете на ред като този, може да си помислите: Какво е възнамерявал кодиращият? Това бъг ли е?
Винаги е добра идея да използвате скоби, когато можете, за да изясните какво искате, особено когато има извикване на метод или множество оператори - това е просто добър стил и подход с най-нисък риск (напр. не правете предположения, но изяснете се, като използвате скоби).
Никога не е зле да добавите допълнителни скоби в изрази, но оставянето им може да навреди доста.
Ето един хубав пример, на който наскоро попаднах:
def foo(arg)
raise "error"
end
x = foo 4 rescue 7
x
=> nil # oops!
x = foo(4) rescue 7
x
=> 7
Надявам се, че това добре илюстрира защо е важно да се използват скоби
Още:
Проверете тук, под „Извикване на метод“: http://ruby-doc.org/docs/ProgrammingRuby/html/tut_methods.html Цитат:
[...] Ако няма неяснота, можете да пропуснете скобите около списъка с аргументи, когато извиквате метод.[...] Въпреки това, освен в най-простите случаи, ние не препоръчваме това- --има някои фини проблеми, които могат да ви спънат.[По-специално, трябва да използвате скоби при извикване на метод, което само по себе си е параметър на друго извикване на метод (освен ако не е последният параметър).] Нашето правило е просто: ако има някакво съмнение, използвайте скоби.
Вижте също: http://phrogz.net/programmingruby/language.html
person
Tilo
schedule
11.10.2011