Ruby中的符号表与其他语言中的符号表有任何不同

Ell*_*lis 2 ruby symbol-tables

符号表上的维基百科条目是一个很好的参考:

http://en.wikipedia.org/wiki/Symbol_table

但是当我尝试理解Ruby中的符号以及它们如何在符号数组中表示时(由Symbol.all_symbols方法返回),

我想知道Ruby的符号表方法是否与其他语言有任何重要的区别?

Mar*_*usQ 6

在这个意义上,Ruby并没有真正的"符号表".它有绑定和符号(lispers称为原子),但实际上并没有像文章描述的那样做.

所以在回答你的问题时:并不是说ruby有不同的做法,而是做了两件不同的事情(:xxx符号 - >范围内的唯一ID和绑定),并使用类似/重叠的术语.

澄清:

您链接的文章给出了符号表的传统定义

其中程序源代码中的每个标识符与其在源中的声明或外观相关的信息相关联,例如其类型,范围级别以及有时其位置

但这不是ruby的符号表所做的.它只为某类对象提供了一个全局唯一的标识,可以:something在源代码中编写,包括类似的东西:+:"Hi bob!"不是标识符的东西.而且,仅使用标识符将不会创建相应的符号.最后,上面这段文中列出的信息都没有存储在ruby的符号列表中.

这是命名的巧合,读这篇文章不会帮助你理解ruby的符号.