How to create a symbol from a string that has whit

2020-05-26 09:35发布

问题:

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