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

Ruby 如何从带有空格的字符串创建符号?,ruby,hash,symbols,Ruby,Hash,Symbols,我正在为电影名称存储创建一个Ruby哈希 当散列的键是包含空格的字符串时,它就可以正常工作 例如: movies={“阿凡达”=>5,“指环王”=>4,“教父”=>4} 现在我尝试用符号代替字符串的使用: movies={Avatar:5,指环王:4,教父:4} 显然,这是行不通的 Ruby如何处理符号命名中的空格?我不知道为什么要在键值中使用空格时使用符号,但您可以这样做。使用:语法无法完成此操作 {:Avatar => 5, :"Lord of the rings" => 4,

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

当散列的键是包含空格的字符串时,它就可以正常工作

例如:

movies={“阿凡达”=>5,“指环王”=>4,“教父”=>4}

现在我尝试用符号代替字符串的使用:

movies={Avatar:5,指环王:4,教父:4}

显然,这是行不通的


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

我不知道为什么要在键值中使用空格时使用符号,但您可以这样做。使用
语法无法完成此操作

{:Avatar => 5, :"Lord of the rings" => 4, :Godfather => 4}
你自己试试看

"Lord of the rings".to_sym
#=> :"Lord of the rings"

要使用空格创建符号,请输入冒号,后跟带引号的字符串。例如,您可以输入:

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

派对迟到了,但另一种解决方法是做以下事情:

movies = Hash.new

movies["the little mermaid".to_sym] = 4 

我试着这么做只是bcoz符号在内存和执行方面比字符串好,但为什么这不起作用呢?movies={Avatar:3,“指环王”:4}但是它确实是movies={Avatar:3,:“指环王”=>4}@swapnesh:这不起作用,因为JavaScript风格的表示法只适用于,并且注意这个解决方案显然会创建一个字符串实例,然后解析或创建一个匹配的符号实例(除非优化器足够聪明来避免这种情况)。使用
:“
语法声明符号应该只解析或创建符号,而不首先创建和丢弃字符串对象。因此--如果使用符号的目的是优化。。。