【发布时间】:2014-01-27 03:55:21
【问题描述】:
我正在使用 codeacadamy.com 学习 Ruby,当前的任务是创建一个包含电影列表的哈希。所以,作为我,我投入的第一部电影是 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" 成为有效符号?
【问题讨论】:
-
不完全是,我理解他的问题是什么,并且实际上在做几乎完全相同的事情,但我仍然不知道为什么它会让 "300".to_sym 成为一个符号,因为符号应该开始具有有效的方法字符。
-
从这里读取前 2 行 -ruby-doc.org/core-2.1.0/Symbol.html
-
但是 '"300": 3' 也不起作用。但这可能只是因为 'symbol:' 语法不像 '=>' 那样充实,因为 ':"300" => 3' 工作得很好。