Rud*_*ger 10 arrays hash lua data-structures lua-table
Lua的表实现将其元素分为两部分:数组部分和散列部分.
这样的东西是否存在于任何其他语言中?
看一下Lua 5.0实现中的第4节"表".
这个想法与Roberto Ierusalimschy以及Lua团队的其他成员原创.我听说罗伯托在2003年麻省理工学院轻量级语言研讨会上发表了一篇关于它的讨论,在这次演讲中他讨论了以前的工作并且令人信服地说这个想法是新的.我不知道其他语言是否已经复制过它.
最初的Awk语言模型比Lua更受限制; 数字或字符串可以用作数组中的键,但数组本身不是第一类值:数组必须具有名称,并且数组不能用作数组中的键.
关于实现,我检查了由Brian Kernighan维护的原始Awk的源代码,并且Awk的实现使用哈希表,而不是Lua的混合数组/表结构.区别很重要,因为在Lua中,当一个表与连续的整数键一起使用时,空间开销与C数组相同.这是不是对原来awk中如此.
我没有费心去调查awk的所有后续实现,例如Gnu Awk,mawk等等.