1.注释: --:单行注释 --[[ --]]: 多行注释 2.命名规则: 区分大小写 Lua标示符用于定义一个变量,函数获取其他用户定义的项。标示符以一个字母 A 到 Z 或 a 到 z 或下划线 _ 开头后加上0个或多个字母,下划线,数字(0到9)。 最好不要使用下划线加大写字母的标示符,因为Lua的保留字也是这样的。 保留字:lua为一些关键词添加一些功能,一般约定,以下划线开头连接一串大写字母的名字(比如 _VERSION)被保留用于 Lua 内部全局变量。 Lua 不允许使用特殊字符如 @, $, 和 % 来定义标示符。 Lua 是一个区分大小写的编程语言。因此在 Lua 中 Runoob 与 runoob 是两个不同的标示符。以下列出了一些正确的标示符: 变量:默认为全局变量 全局变量不需要声明,给一个变量赋值后即创建了这个全局变量,访问一个没有初始化的全局变量也不会出错,只不过得到的结果是:nil。 如果你想删除一个全局变量,只需要将变量赋值为nil。 3.数据类型 nil:空类型,表示一个无效值(在条件表达式中相当于false) boolean:包含两个值:false和true。 number:表示双精度类型的实浮点数,包括整数和小数 string:字符串,字符串由一对双引号或单引号来表示,也可以用 2 个方括号 "[[]]" 来表示"一块"字符串。 function:函数类型 userdata:用户数据类型(表示任意存储在变量中的C数据结构) thread:可当做线程来用(表示执行的独立线路,用于执行协同程序) table:Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字或者是字符串。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。(class使用table来实现的) 1.nil: nil 类型表示一种没有任何有效值,它只有一个值 -- nil,例如打印一个没有赋值的变量,便会输出一个 nil 值: 对于全局变量和 table,nil 还有一个"删除"作用,给全局变量或者 table 表里的变量赋一个 nil 值,等同于把它们删掉, 2.boolean: boolean 类型只有两个可选值:true(真) 和 false(假),Lua 把 false 和 nil 看作是"假",其他的都为"真": 3.string: 字符串的组拼用“..“,”+“一般用于加法运算 使用 # 来计算字符串的长度,放在字符串前面(长度是按照字节来计算的) 4.Lua中的方法不定义返回值类型,可以根据自己的需求进行返回,函数的参数是不指定类型的 注:不限制类型容易写错(约定大于限制) 关于function函数的作为参数传递和匿名函数的用法: 函数也是可以当成数据来进行传递的,相当于C#中的委托与事件
--函数也可以作为数据赋值
--函数作为一个参数进行传递
--函数可以返回多个值
function testFunc(tab,fun)
for k,v in pairs(tab) do
fun(k,v);
end
end
tab1 = {key1= "val1",key2 = "val2"};
function f1(k,v)
print(k..":"..v);
end
testFunc(tab1,f1);
--当这个函数只需要使用一次,其他地方是不需要使用的,使用匿名函数
testFunc(tab1,function(k,v)
print(k.."-"..v);
end
);
--函数可以返回多个值:
function test()
return 10,20;
end
--接收的时候可以接收一个,也可以接收两个
a = test();
a,b = test();
函数中可以传递可变参数(个数)
function test(...)
local arg ={...}--可以避免最后一个值是参数个数的问题
--#arg可以取得arg里面的个数
print(arg[1])--arg会把传递过来的参数生成一个Tabel表(arg最后一个值会保存参数的个数)
end
thread(线程) 在 Lua 里,最主要的线程是协同程序(coroutine)。它跟线程(thread)差不多,拥有自己独立的栈、局部变量和指令指针,可以跟其他协同程序共享全局变量和其他大部分东西。 线程跟协程的区别:线程可以同时多个运行,而协程任意时刻只能运行一个,并且处于运行状态的协程只有被挂起(suspend)时才会暂停。 userdata(自定义类型) userdata 是一种用户自定义数据,用于表示一种由应用程序或 C/C++ 语言库所创建的类型,可以将任意 C/C++ 的任意数据类型的数据(通常是 struct 和 指针)存储到 Lua 变量中调用。
|
请发表评论