当前位置 : 主页 > 网络编程 > lua >

lua中的rawset函数

来源:互联网 收集:自由互联 发布时间:2021-06-23
lua中的rawset函数一般是传递表,索引和值,但我遇到了这段代码: rawset(tbl,name,{}) 和 rawset(tbl,name, function() end) Rawset函数返回一个表,那么在rawset函数中有一个表或函数来表示值是什么意思?
lua中的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函数.

网友评论