lua --- __newindex 的使用规则

1、如果 __newindex 是一个函数,在给 table 不存在的字段赋值的时候,会调用这个函数
2.如果 __newindex 是一个table,在给 table 不存在的字段赋值的时候,会直接给 __newindex 的 table 赋值

测试用例:

 1 local Song = {name = "南山南"};
 2
 3 local mt =
 4 {
 5     __index = Song,
 6     __newindex = function(table, key, val)
 7         print(key .. "是一个不存在的字段,不能对其赋值!");
 8     end
 9 };
10
11 local animal = {}
12 setmetatable(animal, mt);
13 print(animal.name);
14 animal.name = "cat";
15
16 local tmp = {};
17
18 local mt1 =
19 {
20     __index = Song;
21     __newindex = tmp;
22 };
23 local animal1 = {};
24 setmetatable(animal1, mt1);
25 print(tmp.cat);
26 animal1.cat = "Cat";
27 print(tmp.cat);

编译结果:

原文地址:https://www.cnblogs.com/luguoshuai/p/10472196.html

时间: 2024-08-10 00:47:09

lua --- __newindex 的使用规则的相关文章

Lua 学习之基础篇十<Lua 常见的语法规则>

下面讲一些lua 常见的用法和规则,可以为学习理解lua带来帮助. 1. if判断 lua把 nil 和false 视为"假",其他都为"真" 2. 逻辑运算符 and or lua的and or 可以用来构成三元表达式,如下: > = 1 == 1 and 1 or 2 1 但如果是这样写,就不是你想要的结果了: > = 1 == 1 and false or true true 这是因为,and 运算符判定 false不成立,就继续执行了 or 运算

Jump The Great Firewall【step14 嵌入lua】

首先这里需要宣传一下,qtun的网站已经开张了,功能正在逐步添加中. 一.嵌入lua的原因 由于qtun的可配置参数不断增多,因此有必要将参数写入到配置文件之中.又由于C语言并不擅长做字符串的处理,因此加入了轻量级的lua脚本语言,同时嵌入lua更有助于加入第三方插件的支持. 二.代码的修改 包装初始化函数 extern int init_path(char* cmd); extern int init_lua(); extern void show_logo(); extern void co

Lua 架构 The Lua Architecture

转载自:http://magicpanda.net/2010/10/lua%E6%9E%B6%E6%9E%84%E6%96%87%E6%A1%A3/ Lua架构文档(翻译) 十 102010 前段时间翻译了lua官方关于lua5架构设计的一份文档,现在分享给大家. 注意:所有版权都归lua官方所有,本人仅将其翻译为中文,以方便中文阅读者.翻译中出现任何错误导致的结果,本人不负任何责任. 如果有任何翻译错误,以及意见与建议,请email本人.邮件地址:[email protected]. 转载请注

Lua的类型和值

Lua的类型和值 (一)基础介绍 Lua是一种动态类型的语言,变量不需要做定义.Lua中有八种类型,分别是 nil -- 空 boolean -- 布尔 number -- 数字 string -- 字符串 userdata -- 自定义 function -- 函数 thread -- 线程 table -- 表 用type()方法可以识别变量的类型. 1 print(type(nil)) --> nil 2 print(type(true)) --> boolean 3 print(typ

Lua脚本在C++下的舞步(入门指引)(转)

http://www.cnblogs.com/hmxp8/archive/2011/11/23/2259777.html 转帖来自:http://www.acejoy.com/bbs/viewthread.php?tid=1931&extra=page%3D1 现在,越来越多的C++服务器和客户端融入了脚本的支持,尤其在网游领域,脚本语言已经渗透到了方方面面,比如你可以在你的客户端增加一个脚本,这个脚本将会帮你在界面上显示新的数据,亦或帮你完成某些任务,亦或帮你查看别的玩家或者NPC的状态...

lua 基本

Lua 的语法比较简单,学习起来也比较省力,但功能却并不弱. 所以,我只简单的归纳一下 Lua 的一些语法规则,使用起来方便好查就可以了.估计看完了,就懂得怎么写 Lua 程序了. 在 Lua 中,一切都是变量,除了关键字. I. 首先是注释 写一个程序,总是少不了注释的. 在 Lua 中,你可以使用单行注释和多行注释. 单行注释中,连续两个减号"--"表示注释的开始,一直延续到行末为止.相当于 C++语言中的"//". 多行注释中,由"--[["

lua语法

Lua脚本语法说明(增加lua5.1部份特性) Lua 的语法比较简单,学习起来也比较省力,但功能却并不弱. 所以,我只简单的归纳一下Lua的一些语法规则,使用起来方便好查就可以了.估计看完了,就懂得怎么写Lua程序了. 在Lua中,一切都是变量,除了关键字. I.  首先是注释 写一个程序,总是少不了注释的. 在Lua中,你可以使用单行注释和多行注释. 单行注释中,连续两个减号"--"表示注释的开始,一直延续到行末为止.相当于C++语言中的"//". 多行注释中,

Lua简易入门教程

环境:lua for windows (lfW)主页:http://luaforwindows.luaforge.net/https://code.google.com/p/luaforwindows/ lua for windows其实是一整套Lua的开发环境,它包括:Lua Interpreter(Lua解释器)Lua Reference Manual(Lua参考手册) Quick Lua Tour (Lua快速入门)Examples (Lua范例)Libraries with docume

Lua脚本语法说明(转)

Lua脚本语法说明(增加lua5.1部份特性) Lua 的语法比较简单,学习起来也比较省力,但功能却并不弱. 所以,我只简单的归纳一下Lua的一些语法规则,使用起来方便好查就可以了.估计看完了,就懂得怎么写Lua程序了. 在Lua中,一切都是变量,除了关键字.变量没有类型,但是变量的值是有类型的. I.  首先是注释 写一个程序,总是少不了注释的. 在Lua中,你可以使用单行注释和多行注释. 单行注释中,连续两个减号"--"表示注释的开始,一直延续到行末为止.相当于C++语言中的&qu