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 ...
随机推荐
- Deep Learning 2_深度学习UFLDL教程:矢量化编程(斯坦福大学深度学习教程)
1前言 本节主要是让人用矢量化编程代替效率比较低的for循环. 在前一节的Sparse Autoencoder练习中已经实现了矢量化编程,所以与前一节的区别只在于本节训练集是用MINIST数据集,而上 ...
- Python抓取网页中的图片到本地
今天在网上找了个从网页中通过图片URL,抓取图片并保存到本地的例子: #!/usr/bin/env python # -*- coding:utf- -*- # Author: xixihuang # ...
- 基础向量运算-2D镜面反射
如图M为镜面,A为入射光,B为反射光,已知A与M的向量坐标,求B的向量表示. 我们添加辅助向量C. 有以下性质. B = 2 * C - A. [1] |C| = |A| * cos(alpah).A ...
- mousedown(function(){ return false; })作用
mousedown(function(){ return false;}); 阻止浏览器的默认行为. 比如a你加个空连接,可能会在当前页跳转, 你加了这句,就可以阻止a跳转,然后只执行js函数的代 ...
- Nginx 支持 CI 框架的配置并禁止使用 ip 访问
#CIserver { listen 80; server_name www.ci.com; index index.php index ...
- 在Linux中使用vi打开文件时如何显示行号,及跳转到指定行
vi 文件名,打开文件后 如果要显示所有行号,使用 :set nu 如果要显示当前行号,使用 :nu 如果要跳转到指定行,使用 :行号 例如,跳转到第10行,使用 :10
- python语法------时间函数
1.导入函数库: import time 获取格式化的时间 你可以根据需求选取各种格式,但是最简单的获取可读的时间模式的函数是asctime(): #!/usr/bin/python # -*- co ...
- HDU 3016 线段树区间更新+spfa
Man Down Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- <1 小玩意(覆盖效果)
<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="utf-8& ...
- js 判断数据类型的方法及实现
转载自 http://blog.csdn.net/xujiaxuliang/archive/2009/10/21/4708353.aspx null 与 undefined 区别: null 是js的 ...