Lua: 表如何用作散列键?
Lua: how are tables used as hash key?
当table被用作散列键时,它与打印出table时得到的十六进制ID有什么关系吗?
例如,
obj = {}
print(obj)
您可能会得到类似 table: 153CF5A0
的内容。这个table的散列过程中是否使用了这个值?
我注意到,如果您创建两个相同的 table,它们不是彼此的引用,它们会散列为不同的东西:
obj1 = {}
obj2 = {}
map = {}
map[obj1] = 'obj1'
map[obj2] = 'obj2'
print(map[obj1]) -- obj1
print(map[obj2]) -- obj2
是的,当 table 用于索引另一个 table 时,table 的内存地址用作散列的键。请参阅 source code(table 在默认情况下处理)。
当table被用作散列键时,它与打印出table时得到的十六进制ID有什么关系吗?
例如,
obj = {}
print(obj)
您可能会得到类似 table: 153CF5A0
的内容。这个table的散列过程中是否使用了这个值?
我注意到,如果您创建两个相同的 table,它们不是彼此的引用,它们会散列为不同的东西:
obj1 = {}
obj2 = {}
map = {}
map[obj1] = 'obj1'
map[obj2] = 'obj2'
print(map[obj1]) -- obj1
print(map[obj2]) -- obj2
是的,当 table 用于索引另一个 table 时,table 的内存地址用作散列的键。请参阅 source code(table 在默认情况下处理)。