如何从具有空格的字符串创建符号?

swa*_*esh 13 ruby hash symbols

我正在为电影名称存储创建一个Ruby哈希.

当哈希的键是包含空格的字符串时,它可以正常工作.

如:

movies = {"Avatar" => 5, "Lord of the rings" => 4, "Godfather" => 4}

现在我试图用符号替换字符串的使用:

movies = {Avatar: 5, Lord of the rings: 4, Godfather: 4}

显然这不起作用.

Ruby如何处理符号命名中的空格?

old*_*god 17

亲自尝试一下

"Lord of the rings".to_sym
#=> :"Lord of the rings"
Run Code Online (Sandbox Code Playgroud)

  • 请注意,此解决方案显然会创建一个字符串实例,然后解析或创建一个匹配的符号实例(除非优化器足够智能以避免这种情况).使用`:"<name>"`语法声明符号应该只是解析或创建符号而不首先创建和丢弃字符串对象.所以 - 如果使用符号的目的是优化... (4认同)
  • @swapnesh:这不起作用,因为JavaScript风格的表示法仅适用于[某些符号](http://stackoverflow.com/a/10004344/479863)和[带空格的符号不符合条件.](http: //stackoverflow.com/a/8675314/479863) (3认同)

Ste*_*sen 7

我不确定为什么你想在键值中想要空格时使用符号,但是你可以这样做.你只是不能使用<symbol>: <value>语法...

{:Avatar => 5, :"Lord of the rings" => 4, :Godfather => 4}
Run Code Online (Sandbox Code Playgroud)