所以我們爲什麼會做這樣的紅寶石:爲什麼會在attr_accessor中使用符號而不是字符串?
attr_accessor :price
相反的:
attr_accessor 'price'
我已閱讀,符號類似於字符串,但它們是不可變的。但是我不明白爲什麼我們會在做attr_accessor,attr_reader時使用它。我的意思是,有什麼優勢?
所以我們爲什麼會做這樣的紅寶石:爲什麼會在attr_accessor中使用符號而不是字符串?
attr_accessor :price
相反的:
attr_accessor 'price'
我已閱讀,符號類似於字符串,但它們是不可變的。但是我不明白爲什麼我們會在做attr_accessor,attr_reader時使用它。我的意思是,有什麼優勢?
這是正確的做法。 Symbol
是一種數據類型,其目的是專門用來表示「名稱」或「標籤」的概念。在這裏,您正在使用它來傳遞一對方法的名稱來生成。在這種情況下,Symbol
只是正確的數據類型。出於方便的原因,這些方法也採用String
。
符號是不可變的,但這不是它們被使用的主要原因。符號只有一個實例;所有出現的相同符號都指向變量空間中的同一位置,因此,在具有大量實例變量的大型應用程序中,內存節省可能非常重要。 –