決心書說,所有標識符和變量我們聲明/初始化/定義紅寶石將被包含在內部符號表爲標誌;那麼只要包含的符號在程序中的任何位置使用,Ruby就會查找它。例如,在該過程:如何符號紅寶石
a = "1"
- 紅寶石包括可變
a
作爲:a
其表裏面。 a
在程序用於:def a puts "stack_overflow" end
可變a
和標識符def a
具有存儲在其中的單個符號:a
。我使用Symbol.all_symbols.count
檢查了符號計數。計數是一樣的;即加入def a
沒有增加符號表的數量。
當代碼中的任何地方看到a
時,ruby如何區分變量a
和標識符def a
?
s = :x
,是符號變量s
存儲在符號表中,還是隻是:x
?
Stefan謝謝!,但它不是關於我的數量好奇,我們知道,因爲符號的獨特性,計數顯然不會增加,這完全是關於紅寶石所作的區分以及它如何在「a」和def「a」之間形成的,雖然它們都變成了單一符號「:a 「 –
@RichardGeorge the symb ol表用於跟蹤定義的符號,即它基本上是所有符號的數組。它不存儲任何對變量或方法的引用。 – Stefan
來自The Well Grounded Rubyist的FWIW,「符號表基本上是一個基於整數的散列。」 – mackshkatz