1

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

attr_accessor :price

代替:

attr_accessor 'price'

我读过符号类似于字符串,但它们是不可变的。但我不明白为什么我们在做 attr_accessor、attr_reader 时要使用它。我的意思是,有什么好处?

4

3 回答 3

3

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

于 2013-11-14T19:05:23.167 回答
1

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

于 2013-11-14T18:00:40.087 回答
0

偏爱。符号需要较少的输入,一些 IDE 会用漂亮的颜色突出显示它们。

于 2013-11-14T17:44:40.253 回答