Подтвердить что ты не робот

Ruby: двоеточие до vs после

При использовании Ruby я все время смешиваюсь с :.

Может кто-нибудь объяснить, когда я должен использовать его перед именем переменной, например :name, и когда я должен использовать его после переменной типа name:?

Пример был бы возвышенным.

4b9b3361

Ответ 1

Приглашаем вас обоих, создав Hash:

{:name => "foo"}
#or
{name: 'foo'} # This is allowed since Ruby 1.9

Но в основном :name является Symbol объектом в Ruby.

Из docs

Хэши допускают альтернативную синтаксическую форму, когда ваши ключи всегда являются символами. Вместо

options = { :font_size => 10, :font_family => "Arial" }

Вы можете написать это как:

options = { font_size: 10, font_family: "Arial" }

Ответ 2

Это не имеет ничего общего с переменными.

: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, вы можете ссылаться на созданный ключ как символ:

baz[:name]