答案 0 :(得分:2)
甚至可以轻松转换密钥连接:
hash[ ("name" + "xxx").to_sym ]
简短的回答是,您可以避免在Ruby中使用字符串作为键,其中键只是语义标签,使您能够在代码中引用值。在这种情况下,很明显符号可以更有效地完成这项工作(如上所述,如果您没有执行很多转换来生成标签,那么这就完成了。)
解析任意数据时,例如XMl或JSON,然后字符串作为键可能是表达结构的更自然的方式。同样,解析器发出的字符串到标签的转换时间可能是一个因素。
答案 1 :(得分:0)
如果您在循环中多次执行hash["name"+"xxx"]
,那么将密钥拉出循环并将其转换为符号可能会有所帮助。这只是表演的事情。符号在内存中使用单个位置,但每次创建时都会计算字符串。
答案 2 :(得分:0)
如果您的.yaml文件如下所示:
- thing1: value1
thing2: value2
thing3: value3
- thing1: value1
thing2: value2
thing3: value3
- thing1: value1
thing2: value2
thing3: value3
并使用YAML::load_file('filename')
加载它,然后您需要使用字符串作为键。
但是,如果您的yaml文件如下所示:
- :thing1: value1
:thing2: value2
:thing3: value3
- :thing1: value1
:thing2: value2
:thing3: value3
- :thing1: value1
:thing2: value2
:thing3: value3
然后您可以使用符号作为键。在这种情况下,符号对于红宝石侧是优选的,但是对于绳子来说,yaml会更干净。