Разница здесь между вызовом метода и хеш-ключом . Они очень похожи и их легко спутать, если вы не уверены, что ищете.
В вашем первом примере:
a :b
В длинном виде это:
a(:b)
Где теперь это явно аргумент (:b
) к методу (a
).
В другой форме все по-другому:
a: b
Где, если это часть вызова метода, подобного этому:
f a: b
Тогда это на самом деле означает:
f(a: b)
Что в полной форме:
f({ a: b })
Где это определение хеша, соответствующее стилю key: value
. Здесь :a
- это ключ (символ), а b
- это значение (вызов переменной или метода).
Вы часто будете видеть a: :b
, где у вас есть символьный ключ и значение.
Чтобы различать эти две формы при чтении кода, взгляните на то, где он появляется, чтобы получить представление о контексте. При написании кода всегда структурируйте свое мышление в терминах вызовов методов и определений хеша более четко.