问题
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