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