对lua中__newindex的理解
阅读了文章后用流程图来总结一下

__newindex的规则:
a.如果__newindex是一个函数,则在给table不存在的字段赋值时,会调用这个函数。
b.如果__newindex是一个table,则在给table不存在的字段赋值时,会直接给__newindex的table赋值。
应用:
1.__newindex是一个function时,可用来控制一个表中不存在的字段的赋值行为,例如当不希望子类覆盖父类方法或者修改父类成员时,可以对子类__newindex进行修改。
2.保护__index里面的元素不被修改,让其只读
...后续补充
对lua中__newindex的理解的更多相关文章
- 理解lua中 . : self
前言 在LUA中,经常可以看到:. self,如果你学习过Java或C#语言,可以这样理解 .对于c#和java的静态方法 :相当于是实例方法 今天在CSDN上看到一篇博客写的很清楚,转载过来 原文出 ...
- 两个函数彻底理解Lua中的闭包
本文通过两个函数彻底搞懂Lua中的闭包,相信看完这两个函数,应该能理解什么是Lua闭包.废话不多说,上 code: --[[************************************** ...
- Lua中的元表与元方法学习总结
前言 元表对应的英文是metatable,元方法是metamethod.我们都知道,在C++中,两个类是无法直接相加的,但是,如果你重载了"+"符号,就可以进行类的加法运算.在Lu ...
- lua中基类和“继承机制”
基类:基类定义了所有对于派生类来说普通的属性和方法,派生类从基类继承所需的属性和方法,且在派生类中增加新的属性和方法. 继承:继承是C++语言的一种重要机制,它允许在已定义的类的基础上产生新类. lu ...
- lua中常量的实现及表的深拷贝实现
废话:好久没在这里写博客了...主要原因是我买了个域名hanxi.info并在github上搭建了个人博客... lua中默认是没有c中的const常量的,在csdn上找到了一个使用setmetata ...
- Lua中的weak表——weak table
弱表(weak table)是一个很有意思的东西,像C++/Java等语言是没有的.弱表的定义是:A weak table is a table whose elements are weak ref ...
- Lua中的协同程序 coroutine
Lua中的协程和多线程很相似,每一个协程有自己的堆栈,自己的局部变量,可以通过yield-resume实现在协程间的切换.不同之处是:Lua协程是非抢占式的多线程,必须手动在不同的协程间切换,且同一时 ...
- Lua中的require
lua中的require机制 为了方便代码管理,通常会把lua代码分成不同的模块,然后在通过require函数把它们加载进来.现在看看lua的require的处理流程.1.require机制相关 ...
- 【转载】lua中的require机制
[转载自]http://blog.chinaunix.net/uid-552961-id-2736410.html lua中的require机制 为了方便代码管理,通常会把lua代码分成不同的模块,然 ...
随机推荐
- python - 初识面向对象
1.初识面向对象 面向过程:一切以事务的发展流程为中心 优点:负责的问题流程化,编写相对简单 缺点:可扩展性差,只能解决一个问题,改造也会很困难,牵一发 ...
- 怎么让html中 还是显示<button> 而不进行编译
toTXT(str) { var RexStr = /\<|\>|\"|\'|\&| | /g str = str.replace(RexStr, ...
- Angular2+实现右键菜单的重定义--contextmenu
在做需求时用到video这个html5的新增标签,然后公司要求把video的右键屏蔽了去,我在网上找了很久没找到完整的方法来实现这个功能,只能自己摸索着来. 不说废话,先上干货 0.0 video.c ...
- lr12关联,响应乱码
1.前程贷登录.投标脚本 Action() { // web_url("登录页", // "URL=http://120.78.128.25:8765 ...
- python模块part1
一.时间模块 1.时间表示形式 在Python中,通常有这三种方式来表示时间:时间戳.元组(struct_time).格式化的时间字符串:(1)时间戳(timestamp) :通常来说,时间戳表示的是 ...
- 复杂xml格式报文和实体类之间的转化
pom.xml中引入如下依赖: <dependency> <groupId>org.eclipse.persistence</groupId> <artifa ...
- 构建Java开发环境(JDK)
在我们学习Java前我们需要构建相对应的开发环境.JDK(Java Development Kit)是Java开发的必备条件. Java 的JDK是Sun公司的产品,但由于Sun公司被Oracle公司 ...
- windows+nginx 查看并发链接数
1.windows下nginx查看并发链接数要使用stable版本 2.配置代码: location /status { stub_status on; } 3.访问地址:http://localho ...
- linux 常见报错
yum install 包名 出现安装包重复,同一个安装包出现多版本 使用 rpm -qa |grep 包名 如果出现包名,则说明已存在该包(已被安装),要安装新版本的,可以卸载已装的y ...
- vue中父子组件的通信
1.父组件向子组件传递数据 父组件传递:data = parent.data 子组件接收props: {data:{}} 2.子组件向父组件传递数据(https://vuefe.cn/v2/guide ...