我正在使用codeacadamy.com學習Ruby,當前的任務是創建一個包含電影列表的哈希。所以,作爲我來說,我把在第一部電影是300爲什麼「300」.intern有效,但:300不是
movies = {
300: 3,
titanic: 1,
joe_versus_the_volcanoe: 3
}
而且我注意到,300拋出一個錯誤:
(ruby):1: syntax error, unexpected ':', expecting tASSOC
300: 3,
^
這使得有很大的意義,但後來我嘗試使用串。
puts "300".intern
puts "300".to_sym
puts :300
前兩個是有效符號,輸出300到屏幕上,但最後一個引發錯誤。我知道300應該是錯誤的,因爲它不是以有效的方法字符(a-zA-Z_,據我所知)開始,但是.to_sym
和.intern
是做什麼來使"300"
成爲一個有效的符號?
可能dublicate http://stackoverflow.com/questions/4281397/why-cant-i-use -an-integer-as-a-key-using-the-new-ruby-1-9-2-hash-syntax – TheConstructor
不完全是,我明白他的問題是什麼,實際上是在做幾乎完全一樣的事情,但我仍然不知道爲什麼它會讓「300」.to_sym成爲一個符號,因爲符號應該以有效的方法字符開頭。 –
請閱讀此處的前兩行-http://www.ruby-doc.org/core-2.1.0/Symbol.html –