为什么要在attr_accessor中使用符号而不是字符串?

时间:2013-11-14 17:40:59

标签: ruby

那么我们为什么要在Ruby中这样做呢?

attr_accessor :price

而不是:

attr_accessor 'price'

我已经读过Symbols与Strings类似,但它们是不可变的。但我不明白为什么我们在做attr_accessor,attr_reader时会使用它。我的意思是,有什么好处?

3 个答案:

答案 0 :(得分:3)

这是正确的做法。 Symbol是一种数据类型,其目的是专门表示“名称”或“标签”的概念。在这里,您使用它来传递要生成的一对方法的名称。在这种情况下,Symbol只是正确的数据类型。出于方便原因,这些方法也需要String

答案 1 :(得分:1)

符号是固定的,与字符串不同,因此您可以避免创建大量(可能)重复的字符串对象。在几个地方使用相同的:foo符号不会以恒定速率消耗更多内存,除非对'foo'执行相同操作

答案 2 :(得分:0)

偏好。符号需要较少的打字工作,一些IDE用漂亮的颜色突出显示它们。