Строка с префиксом двоеточия в рубине - PullRequest
4 голосов
/ 09 июля 2019

Я новичок в Ruby и только что наткнулся на этот фрагмент кода:

rr = {
  id: 215043,
  :'Official Name' => "Google, Inc."
}

Что больше всего ошибок, так это :'Official Name' =>. Это похоже на символ с пробелами.

И когда я его распечатываю, я вижу:

{:id=>"215043", :"Official Name"=>"Google, Inc."}

Пожалуйста, помогите мне понять это.

Ответы [ 2 ]

5 голосов
/ 09 июля 2019

Что больше всего ошибок, так это :'Official Name' =>.Он выглядит как символ с пробелами.

Это именно то, что он есть.

p :'Official Name'.class
# => Symbol

Однако в хеш-литерале вместо него можно поставить двоеточие, чтоЯ думаю, что выглядит немного лучше:

rr = {
  id: 215043,
  "Official Name": "Google, Inc.",
}

rr.keys.each {|key| p [key, key.class] }
# => [:id, Symbol]
#    [:"Official Name", Symbol]

Для дальнейшего использования, официальные документы довольно просты для навигации, когда вы привыкнете к ним.В этом случае вам нужно перейти по ссылке для doc / syntax / literals.rdoc , а затем проверить разделы по Символы и Хэши .

1 голос
/ 09 июля 2019

Это все еще символ .

Ruby позволяет вам определить символ с пробелами, если вы заключите его в такие кавычки.

Проверьте этот ответ , чтобы увидеть пример символа с пробелами, созданными из строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...