- 8个类型:
nil,string,number,function,thread,table,boolean,userdata - pairs和ipairs的区别:(建议使用pairs)
pairs可以返回nil,可以遍历表中所有的键
ipairs遇到nil则退出,只能返回数字0,只能遍历到表中第一个出现的不是整数的键 - 命名规则:
首字母必须是下划线或者字母,名称由下划线,字母,数字组成;
区分大小写;
名称不能是关键字; - 逻辑运算符
and 两个表达式相与,表达式1 为真,返回表达式2,1为假,返回1
or 两个表达式相或,表达式1 为真,返回表达式1,1为假,返回表达式2
(就是这么不同寻常)
三元运算符等同于((a and b)or c) - 闭合函数:
含有非局部变量的函数,非局部变量是指相对于一个函数是局部变量,相对于另一个函数不是局部变量
6.
loadfile:只编译不执行
dofile:既编译也执行,会重复执行
require:既编译也执行,只执行一次
7
协同程序的状态:挂起,执行,死亡,正常
8
getmetatable():参数为指定的表,返回值为表对应的元表
setmetatable():两个参数,第一个是自定义的普通表,第二个是指定的元表
9
__index:用于查询
__newindex:用于更新
__newindex的规则:
a.如果__newindex是一个函数,则在给table不存在的字段赋值时,会调用这个函数。
b.如果__newindex是一个table,则在给table不存在的字段赋值时,会直接给__newindex的table赋值。
10
全局变量 -G
11
“. ”与“:”区别:
“. ”需要显示的将参数列表中将调用的参数传递
“:”不需要显示的将参数列表中将调用的参数传递,系统自动隐式的传入对象本身
12.Lua面向对象思想
使用function,table的方式实现类
使用function创建类中的方法
使用table描述类的成员所拥有的属性
使用settable函数和__index元方法实现继承
lua中可以函数重写(覆盖)不能重载(会调用最新定义的方法)
lua中参数按照顺序进行赋值,多余的参数被忽略,不足的参数用nil赋值