Фигурные скобки: [скобки], (круглые скобки) и {фигурные скобки} в Ruby & Rails - PullRequest
8 голосов
/ 24 июля 2010

Так что слабая терпимость Ruby к использованию фигурных скобок иногда , а не их НЕ ТРЕБУЕТ, привела меня в замешательство, поскольку я пытаюсь изучить Rails и когда / где использовать каждый из них и почему? 1003 *

Иногда параметры или значения передаются как (@user, @comment), а иногда они кажутся [ :user => comment ], а другие - просто: :action => 'edit'

Я говорю о нас [] против () против {}

Какие правила? И есть ли какие-нибудь хитрости, которые вы должны вспомнить?

1 Ответ

22 голосов
/ 24 июля 2010

Круглые скобки () предназначены для группировки логических или математических выражений и группировки аргументов для вызова функции, например:

a = 2 * (3 + 4)
b = (x==y) || (m==n)
Hash.new.send('[]=', :a, :b)

Вьющиеся скобки {} используются для литералов и блоков хеша, например:

h = {1=>2, 2=>3}
h.each {|k,v| puts k+v}

Квадратные скобки [] используются для литералов массива, индексации и среза массива, а также для выборки из хеша, например:

arr = [1, 2, 3]
two = arr[1]
three = h[2]

Чтобы запутать дело, литералы хеша также могут бытьиспользуется на месте в качестве аргумента для вызова метода без использования фигурных скобок или скобок, если это последний аргумент (спасибо samuil).Кроме того, хеш-литералы можно использовать на месте в квадратных скобках для создания массива из одного элемента, содержащего хэш:

puts 1=>2, 3=>4 #=> 1234
[5=>6, 7=>8]    #=> [{5=>6, 7=>8}]

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

...