lua学习记录
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 +
end return foo1,foo2
end
f1,f2 = Create()
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加载
lua学习记录的更多相关文章
- Lua和C++交互 学习记录之九:在Lua中以面向对象的方式使用C++注册的类
主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3 参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 在 ...
- Lua和C++交互 学习记录之八:C++类注册为Lua模块
主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3 参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 1 ...
- Lua和C++交互 学习记录之七:C++全局函数注册为Lua模块
主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3 参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 1 ...
- Lua和C++交互 学习记录之六:全局函数交互
主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3 参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 1 ...
- Lua和C++交互 学习记录之五:全局数组交互
主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3 参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 1 ...
- Lua和C++交互 学习记录之四:全局table交互
主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3 参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 1 ...
- Lua和C++交互 学习记录之三:全局值交互
主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3 参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 1 ...
- Lua和C++交互 学习记录之二:栈操作
主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3 参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 1 ...
- Lua和C++交互 学习记录之一:C++嵌入脚本
主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3 参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 1 ...
随机推荐
- VLAN
VLAN VLAN技术要点主要有两点: 1.支持VLAN的交换机的内部交换原理: 2.设备之间(交换机之间,交换机与路由器之间,交换机与主机之间)交互时,VLAN TAG的添加和移除. VLAN通信 ...
- Php数据类型之整型详解
php中支持的数据类型 在php中主要支持8种数据类型.和3中伪类型的一个形式.8种数据类型分为以下三3大类,第一个就是我们的标量类型,标量类型它只能存储单一数据,那第二大类就是我们的复合类型,第三个 ...
- jQuery水平下拉菜单实现
<!DOCTYPE html> <html> <head> <title>jQuery水平下拉菜单实现</title> ...
- nginx root&alias文件路径配置
转:https://www.ttlsa.com/nginx/nginx-root_alias-file-path-configuration/ 总结: alias 改变了访问路径.root对应loca ...
- scala学习笔记
一 入门 为了增加编程趣味和技能,学习新语言,体会函数式编程和简易的并发管理模型,了解日渐活跃的Spark,尝试下Scala.Scala = Scalable language,作者是Martin O ...
- [转]深入理解Java 8 Lambda(类库篇——Streams API,Collectors和并行)
以下内容转自: 作者:Lucida 微博:@peng_gong 豆瓣:@figure9 原文链接:http://zh.lucida.me/blog/java-8-lambdas-insideout-l ...
- iOS开发UI篇—Quartz2D使用(信纸条纹)
iOS开发UI篇—Quartz2D使用(信纸条纹) 一.前导程序 新建一个项目,在主控制器文件中实现以下几行代码,就能轻松的完成图片在视图中的平铺. #import "YYViewContr ...
- centos 防火墙配置
转载:http://www.cnblogs.com/bugs/p/3587915.html 1.安装iptables防火墙 怎么知道系统是否安装了iptables?执行iptables -V,如果显示 ...
- JS判断是否已经到达页面底部
$(window).scroll(function(){ var scrollTop=$(this).scrollTop(); var scrollHeight=$(document).height( ...
- js限制文本框只能输入整数或者带小数点[转]
这篇文章是关于js限制文本框只能输入整数或者带小数点的内容,以下就是该内容的详细介绍. 做表单验证的时候是否会碰到验证某个输入框内只能填写数字呢,仅允许输入整数数字或者带小数点的数字.下面这段代码也许 ...