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

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Programming in Lua读书笔记的更多相关文章

  1. 《Programming Hive》读书笔记(一)Hadoop和hive环境搭建

    <Programming Hive>读书笔记(一)Hadoop和Hive环境搭建             先把主要的技术和工具学好,才干更高效地思考和工作.   Chapter 1.Int ...

  2. 《Programming Hive》读书笔记(两)Hive基础知识

    <Programming Hive>读书笔记(两)Hive基础知识 :第一遍读是浏览.建立知识索引,由于有些知识不一定能用到,知道就好.感兴趣的部分能够多研究. 以后用的时候再具体看.并结 ...

  3. lua读书笔记

    接下来把我所看的<Lua程序设计>中介绍lua的内容,时时的记录下来.当做一个读书笔记吧. 先说一下怎样直接运行lua文件吧,windows cmd进入相应的文件夹,然后输入lua,出现版 ...

  4. Programming 2D Games 读书笔记(第四章)

      示例一:Game Engine Part 1 更加完善游戏的基本流程 Graphics添加了以下几个方法,beginScene和endScene提高绘图,showBackbuffer去掉了clea ...

  5. 《The C Programming Language》读书笔记(一)

    1. 对这本书的印象 2011年进入大学本科,C语言入门书籍如果我没记错的话应该是谭浩强的<C程序设计>,而用现在的眼光来看,这本书只能算是一本可用的教材,并不能说是一本好书.在自学操作系 ...

  6. Programming 2D Games 读书笔记(第六章)

      http://www.programming2dgames.com/chapter6.htm 示例一:Bounce 边界碰撞测试 velocity为移动的速度, 超过右边界,velocity.x为 ...

  7. Programming 2D Games 读书笔记(第五章)

      http://www.programming2dgames.com/chapter5.htm 示例一:Planet 真正示例的开始,首先是载入2张图片 1.Graphics添加了2个方法 load ...

  8. Programming 2D Games 读书笔记(第三章)

      示例一:DirectX Window Graphics类用于初始化Direct 3D 主流程: 仅需要粗体部分 try{ // Create Graphics object graphics = ...

  9. Programming 2D Games 读书笔记(第二章)

      本意还是想了解DirectX的,由于网上拿不到书的pdf文档,幸好有作者的源代码示例,想完整的看一下,基本的游戏需要的点. 下面直接以代码为例,仅用于帮助自身理解 http://www.progr ...

随机推荐

  1. 【转】家庭wifi覆盖指导

    网址:家庭wifi覆盖指导 私以为,目前民用 wifi 路由器市场已经完全走上了邪路.天线越来越大,发射功率越做越高.都敢冒着法律的风险使用大大超过 100mW 的发射功率了.且不论巨大的发射功率可能 ...

  2. 课堂笔记-background属性

    一,background-position:(图片定位)   三种写法:   1):按%比,左上角最小(0%,0%),右下角最大(100%,%100):   2):(x,y)左上角最小(0,0),右下 ...

  3. 浅谈JavaScript eval() 函数

    用js的人都应该知道eval()函数吧,虽然该函数用的极少,但它却功能强大,那么问题来了,为什么不常用呢?原因很简单,因为eval()函数是动态的执行其中的字符串,里面有可能是脚本,那么这样的话就有可 ...

  4. 缓存,socket乱码等

    在服务端默认的编码情况下,JAVA的SOCKET接收需要GBK编码,而C#的接收需要UTF-8编码

  5. visual studio 的Error List 显示乱码

    复制到右键菜单如下: Severity Code Description Project File LineError 閿欒: 绋嬪簭鍖卌om.baidu.lbsapi.auth涓嶅瓨鍦? com. ...

  6. Hello Spring

    初认识Spring 什么是spring:1.Spring是一个轻量级的DI/IoC和AOP容器的开源框架,来源于Rod Johnson 在其著作<Expert one on one J2EE d ...

  7. python——socket网络编程

    一.OSI七层模型

  8. easycwmp在开发板上的配置

    原创作品,转载请注明出处 copyright:weishusheng   2015.3.18 email:642613208@qq.com 平台: Linux version 2.6.32-279.e ...

  9. t2712:字符串移位包含问题

    t2712:字符串移位包含问题   总时间限制:1000ms  内存限制:65536kB描述    给定两个字符串s1和s2,要求判定其中一个字符串    是否是另一字符串通过循环移位后的子字符串.例 ...

  10. 为了方便可灌入自定义方法AppendLog 比如File

    说起到qt的编译,真是领人痛心啊,不仅编译选项繁多,而且编译时间比较久,总是能使想编译qt源码的人望而却步,呵呵...我就是其中一个,不知道从什么时候开始就想着把qt的源码编译一下,也尝试过几次,但都 ...