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. ThinkPHP 3.2 获取页面运行时间

    在ThinkPHP中,可以通过在config.php中配置'SHOW_PAGE_TRACE' =>true,打开页面调试,实现页面载入时间的显示.但显示在页面右下角TP的LOGO显然不能适用于我 ...

  2. python3 filter用法(举例求0~n之间的素数)

    在用python3求0~n之间的素数时,关于filter用法的有点模糊,于是上网查了一下filter用法. 求0~n之间素数的脚本prime.py: def f(x): plist = [0,0] + ...

  3. git 版本控制

    用gitbash进入类似命令行的窗口 用命令 cd e:/learngit 进入该目录,然后在此目录下初始化$ git init, 于是该文件夹就成为了一个工作区,里面的.git文件就是版本库(rep ...

  4. 关于redis扩展安装及使用

    11月23日,预留 http://blog.sina.com.cn/s/blog_68431a3b0102v6dz.html http://blog.csdn.net/rachel_luo/artic ...

  5. python学习之关键字

    1.assert 语句形式:assert 布尔表达式[,msg] 解释:assert是检验一个表达式是否为真.若不为真,则触发一个错误. 例如: assert False assert 1==2 as ...

  6. java的https请求解决证书问题

    package sqr.srchSpider.utils; import java.security.SecureRandom; import java.security.cert.Certifica ...

  7. 架设lamp服务器后,发现未按照 Apache xsendfile模块,

    今天在架设lamp服务器后,发现apache 未按照xsendfile模块,于是查找资料按照如下: 安装apache xsendfile模块yum install mod_xsendfile

  8. the difference between const int *, int * const, int const *

    Some people may be confused about the sequence of const and * on declaration in C++/C, me too. Now I ...

  9. kali linux 安装nvidia

    开始安装之前需要说明一下几点: 1.安装闭源显卡驱动有一定风险,比如黑屏或者无法进入图形界面什么的.如果您很害怕折腾,而且不在Linux系统中玩开源游戏(比如Nexuiz)或看高清电影,默认的nouv ...

  10. HackerRank-Longest Subarray

    give an array and target value, find the max length of the subarray which sum of the elements is les ...