How to create a symbol from a string that has whitespaces?

假装没事ソ 提交于 2020-01-12 03:24:05

问题


I am creating a Ruby hash for movie names storage.

When the hash's keys are strings that contains whitespaces, it works just fine.

As in:

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

Now I am trying to replace the use of strings with symbols:

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

Obviously that doesn't work.

How does Ruby handle whitespaces in symbol naming?


回答1:


Try by yourself

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



回答2:


I'm not sure why you want to use symbols when you want spaces in the key values, but you can do that. You just can't do it using the <symbol>: <value> syntax...

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



回答3:


To make a symbol with spaces, enter a colon followed by a quoted String. For your example, you would enter:

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



回答4:


Late to the party, but another way to get around this is to do the following:

movies = Hash.new

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


来源:https://stackoverflow.com/questions/15353488/how-to-create-a-symbol-from-a-string-that-has-whitespaces

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!