lua中的rawset函数一般是传递表,索引和值,但我遇到了这段代码: rawset(tbl,name,{}) 和 rawset(tbl,name, function() end) Rawset函数返回一个表,那么在rawset函数中有一个表或函数来表示值是什么意思?
rawset(tbl,name,{})
和
rawset(tbl,name, function() end)
Rawset函数返回一个表,那么在rawset函数中有一个表或函数来表示值是什么意思?
参考手册:
rawset (table, index, value)
: Sets the real value of table[index] to value, without invoking any metamethod. table must be a table, index any value different from nil, and value any Lua value.
这意味着什么:
> table的metatable未被使用:这就是为什么它是“raw”set,该字段是直接添加的;没有原始,表的metatable将用于处理“set”动作;
>索引与nil不同的任何值:在Lua中,这实际上意味着除了nil之外的任何类型的Lua对象:数字,函数,另一个表等(Lua ref manual列出所有类型);
>值任何Lua值:与之前相同,但甚至可以是nil:如果设置为nil,则有效地从表中删除项目.
因此索引名称只表示该表是一个关联数组(除非名称是数字,但这会产生误导),在第一种情况下,关联值是另一个表,在第二种情况下,它是一个Lua函数.