Lua的metatable(元表)是一个Lua table,它可以为另一个table(称为原表)指定一些特殊的行为。metatable可以包含以下字段:- __index:当原表中的一个键没有对应的值
Lua的metatable(元表)是一个Lua table,它可以为另一个table(称为原表)指定一些特殊的行为。
metatable可以包含以下字段:
- __index:当原表中的一个键没有对应的值时,会去metatable中查找该键对应的值,如果有则返回,否则返回nil。
- newindex:当原表中的一个键没有对应的值时,如果在metatable中有newindex字段,则会调用该字段的值来设置原表中的键值。
- call:当一个table被当做函数调用时,如果该table有call字段,则会调用该字段的值。
- add、sub、__mul、__div、__mod、__pow、__unm:用于重载运算符。
- __concat:用于重载字符串连接运算符。
- eq、lt、__le:用于比较运算符。
- metatable:当一个table有metatable字段时,该table的metatable不能被修改。
通过为一个table设置metatable,可以改变该table的行为,使其具有一些特殊的功能,比如重载运算符、实现面向对象的编程模型等。
暂无管理员
粉丝
0
关注
0
收藏
0