1.八种数据类型:number,string,boolean,nil,function,table,协程,自定义类型 空字符串和数字0是真,false和nil为假 2.lua是动态语言,每个变量携带自己的类型,可以运行时类型转换,print(type(my_var))得到类型 3.不格式化的字符串:print([[aa]]);print([==[[a]]==]),注释也可以用--[==[和--]==] 4.tonumber,tostring,#得到字符串长度 5.理解数组:a={x=10, y=45; "one", "tow", "three"} for i,v in pairs(a) do print(i,v) end 6.local foo1 = foo1 局部变量拷贝自全局变量 7.常用的控制流程:if_else_then,while_do_end,repeat_until,for_do_end 8.函数的参数如果是字符串或者数字,圆括号可有可无 9.lua提供了冒号操作符模仿面向对象的调用:string.byte(data,i)等价于data:byte(i)前提是type(data)是string 这是lua提供的语法糖,function的写法也是一种语法糖,使得代码看起来像pascal 10.闭包的例子
function Create(n)
local function foo1()
print(n)
end
local function foo2()
n = n + 10
end
return foo1,foo2
end
f1,f2 = Create(1979)
f1() -- 打印1979
f2()
f1() -- 打印1989
f2()
f1() -- 打印1999
上面代码来自:http://www.cnblogs.com/effort-rookie/archive/2012/10/10/2718023.html 闭包:就是函数加上‘局部变量’的控制块,理解局部变量的生存周期;闭包可对应设计模式的工厂模式; 函数是编译时(静态),闭包是运行时(动态);对象是附有行为的数据,而闭包是附有数据的行为 11.当函数最后一个动作是调用另外一个函数时,我们称这种调用尾调用,相当于goto所以不需要额外的堆栈空间 12.package.loadlib: 从dll或者so引用函数;lua-5.3去掉了package.seeall 13.require先从环境变量找*.lua,再找库*.dll(或*.so),如果是库就用package.loadlib加载
|
请发表评论