那么我们为什么要在Ruby中这样做呢?
attr_accessor :price
而不是:
attr_accessor 'price'
我已经读过Symbols与Strings类似,但它们是不可变的。但我不明白为什么我们在做attr_accessor,attr_reader时会使用它。我的意思是,有什么好处?
答案 0 :(得分:3)
这是正确的做法。 Symbol
是一种数据类型,其目的是专门表示“名称”或“标签”的概念。在这里,您使用它来传递要生成的一对方法的名称。在这种情况下,Symbol
只是正确的数据类型。出于方便原因,这些方法也需要String
。
答案 1 :(得分:1)
符号是固定的,与字符串不同,因此您可以避免创建大量(可能)重复的字符串对象。在几个地方使用相同的:foo
符号不会以恒定速率消耗更多内存,除非对'foo'
执行相同操作
答案 2 :(得分:0)
偏好。符号需要较少的打字工作,一些IDE用漂亮的颜色突出显示它们。