【问题标题】:Lua: how are tables used as hash key?Lua:如何将表用作哈希键?
【发布时间】:2017-12-09 15:08:12
【问题描述】:

当一个表被用作哈希键时,它与打印该表时得到的十六进制 id 有什么关系吗?

例如,

obj = {}
print(obj)

您可能会得到类似table: 153CF5A0 的信息。这张表的hash过程中是否用到了这个值?

我注意到,如果您创建两个不相互引用的相同表,它们会散列到不同的东西:

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

map[obj1] = 'obj1'
map[obj2] = 'obj2'
print(map[obj1]) -- obj1
print(map[obj2]) -- obj2

【问题讨论】:

    标签: dictionary hash lua-table


    【解决方案1】:

    是的,当一个表用于索引另一个表时,表的内存地址被用作哈希的键。请参阅source code(默认情况下处理表格)。

    【讨论】:

    • 哈希函数如何区分表的内存地址(153CF5A0)和整数153CF5A0?
    • @yelq,它没有:它当然会处理碰撞。
    猜你喜欢
    • 2010-10-13
    • 2016-11-30
    • 1970-01-01
    • 2011-07-01
    • 2016-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-30
    相关资源
    最近更新 更多