Lua的长处之一就是可以通过新类型和函数来扩展其功能。动态类型检查最大限度允许多态出现,并自动简化调用内存管理的接口,因为这样不需要关心谁来分配内存谁来释放内存,也不必担心数据溢出。高级函数和匿名函数均可以接受高级参数,使函数更为通用。
     Lua使用者分为三大类:使用Lua嵌入到其他应用中的、独立使用Lua的、将Lua和C混合使用的。
 
 
。在控制结构的条件中除了 false和 nil为假,其他值都为真。所以Lua认为0和空串都是真。
 
Lua会自动在 string和 numbers之间自动进行类型转换,当一个字符串使用算术操作符时, string就会被转成数字。
print("10" + 1) --> 11 

反过来,当Lua 期望一个string而碰到数字时,会将数字转成 string。

print(10 .. 20) --> 1020 
 
表的构造

表是Lua 特有的功能强大的东西。最简单的构造函数是 {},用来创建一个空表。可以直接初始化数组 :

days = {"Sunday", "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday"}
Lua将"Sunday"初始化days[1](第一个元素索引为1),
 

在构造函数中域分隔符逗号( ",")可以用分号( ";")替代,通常我们使用分号用来分割不同类型的表元素。

a = {x=10, y=45; "one", "two", "three"} 
 
 基本语法
Lua可以对多个变量同时赋值,变量列表和值列表的各个元素用逗号分开,赋值语句右边的值会依次赋给左边的变量。
a,b = 10,20;
print(a,b);          --10     20
a,b = a+b,a+1;
print(a,b);          --30     11
 

应该尽可能的使用局部变量,有两个好处:

1. 避免命名冲突

2. 访问局部变量的速度比全局变量更快 .

 
迭代table元素的(pairs),迭代数组元素的(ipairs)
pairs可以遍历表中所有的key,并且除了迭代器本身以及遍历表本身还可以返回nil;但是ipairs则不能返回nil,只能返回数字0,如果遇到nil则退出。它只能遍历到表中出现的第一个不是整数的key.
 
lua字符串截取

local Str = "hello word!"

string.sub(Str,0,string.len(Str)-1) -- hello word

string.sub(目标字符串,起始位置,长度) -- 获取指定位置长度的字符串

string.len(目标字符串)  -- 获取字符串的长度

闭包

当一个函数内部嵌套另一个函数定义时,内部的函数体可以访问外部的函数的局部变量,这种特征我们称作词法定界。

  1. names ={"Peter","Paul","Mary"}
  2. grades ={Mary=10,Paul=7,Peter=8}
  3. table.sort(names,function(n1, n2)
  4. return grades[n1]> grades[n2]-- compare the grades
  5. end)
  6. for k,v in pairs(names)do
  7. print(k.." = "..v);
  8. end
结果:
1 = Mary
2 = Peter

3 = Paul

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

最新文章

  1. source /etc/profile报错-bash: id:command is not found
  2. CentOS 安装
  3. UML系列01之 UML用例图
  4. 51nod1349 最大值
  5. vs如何新建自己工程的环境变量(局部)和 Windows系统(全局).
  6. WordPress Think Responsive Themes ‘upload_settings_image.php’任意文件上传漏洞
  7. linux学习笔记之线程同步机制
  8. Arduino 入门程序示例之一片 LED(2015-06-11)
  9. 201521123061 《Java程序设计》第十二周学习总结
  10. Redis进阶实践之十四 Redis-cli命令行工具使用详解第一部分
  11. SSH集成(Struts+Spring+Hibernate)
  12. Unity存储路径
  13. c#: TextBox添加水印效果(PlaceHolderText)
  14. BZOJ2618[Cqoi2006]凸多边形——半平面交
  15. vue运行时 eslint 报“import/first” WARN deprecated browserslist 问题解决
  16. FICO基础知识(二)
  17. Hive HiveServer2+beeline+jdbc客户端访问操作
  18. asp.net 重写URL方法和封装好的DLL
  19. 相邻行列相互影响的状态类问题(类似状压dp的搜索)(POJ3279)
  20. mysql 慢查询记录方法

热门文章

  1. 腾讯优测优分享 | Android性能测试工具化实现
  2. ion-scroll 滚动框
  3. Log4j的简要概述
  4. Zookeeper概论(对zookeeper的概论、原理、架构等的理解)
  5. iOS中常用的设计模式
  6. Surprise团队第三周项目总结
  7. IOS开发网络数据---- AFNetworking的使用
  8. css中的背景、边框、补丁相关属性
  9. Linux Command Line 笔记(1)
  10. 打算从oschina的博客搬运到cnblog了