При использовании Ruby я все время смешиваюсь с :.
Может кто-нибудь объяснить, когда я должен использовать его перед именем переменной, например :name, и когда я должен использовать его после переменной типа name:?
Пример был бы возвышенным.
Ответ 1
Приглашаем вас обоих, создав Hash:
{:name => "foo"}
#or
{name: 'foo'} # This is allowed since Ruby 1.9
Но в основном :name является Symbol объектом в Ruby.
:foo является литералом Symbol, так же как 'foo' является литералом String, а 42 является литералом Integer.
foo: используется в трех местах:
в качестве альтернативного синтаксиса для Symbol литералов как ключ литерала Hash: { foo: 42 } # the same as { :foo => 42 }
в списке параметров для объявления параметра ключевого слова: def foo(bar:) end
в списке аргументов для передачи аргумента ключевого слова: foo(bar: 42)
Ответ 3
:name - символ. name: "Bob" - это специальный короткий синтаксис для определения хэша с символом :name ключ и строка "Bob" как значение, которое в противном случае было бы записано как { :name => "Bob" }.
Ответ 4
Вы можете использовать его после создания хэша.
Вы используете его раньше, когда хотите ссылаться на символ.
В примере Arup {name: 'foo'} вы создаете символ и используете его как ключ.
Позже, если этот хеш хранится в переменной baz, вы можете ссылаться на созданный ключ как символ: