Lua:如何将表用作哈希键?

当把表用作哈希键时,它与打印表时得到的十六进制 ID 有关吗?

例如,

obj = {}
print(obj)

你可能会得到类似 table: 153CF5A0 的值。这个值是否用于此表的哈希过程?

我注意到,如果你创建两个完全相同但不是彼此引用的表,它们哈希到不同的值:

obj1 = {}
obj2 = {}
map = {}

map[obj1] = 'obj1'
map[obj2] = 'obj2'
print(map[obj1]) -- obj1
print(map[obj2]) -- obj2
点赞
用户107090
用户107090

是的,当表被用作索引另一个表时,表的内存地址将被用作哈希键。请参阅源代码(表在默认情况下被处理)。

2017-07-05 19:55:10