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. win10 用cmake 3.5.2 和 vs 2015 update1 编译 GPU版本(cuda 8.0, cudnn v5 for cuda 8.0)

    win10 用cmake 3.5.2 和 vs 2015 update1 编译 GPU版本(cuda 8.0, cudnn v5 for cuda 8.0)  用vs 2015打开 编译Release ...

  2. iOS RSA加密解密及签名验证

    1.首先要下载openssl,这个不用说,直接官网下载或者用brew install openssl下载 2.终端生成私钥密钥 2.1生成私钥 openssl genrsa - 2.2生成密钥 ope ...

  3. nginx-1.7.9快速启动连接手机测移动端页面

    大家好,本人之前用nginx熟熟的,后来一段时间不用,当今天再次想使用的时候,发现,悲催的是,竟然忘记怎么用了!噢噢,于是乎,就从网上搜索怎样让nginx和移动端页面联系在一起测试. 可惜的是,我搜索 ...

  4. 获取select标签选中状态 的label的值。

    <select name="procode" onchange="alert(this.options[this.selectedIndex].text)" ...

  5. acm数学(转)

    这个东西先放在这吧.做过的以后会用#号标示出来 1.burnside定理,polya计数法    这个大家可以看brudildi的<组合数学>,那本书的这一章写的很详细也很容易理解.最好能 ...

  6. jsp按钮隐藏自动点击

    <%@ page language="java" import="java.util.*" pageEncoding="big5"%& ...

  7. 自动换行(word-wrap:break-word;word-break:break-all)

    word-wrap:break-word; 自动换行,不把单词拆开 word-break:break-all; 自动换行,拆开单词 white-space:nowrap; 文本不会换行,文本会在同一行 ...

  8. 第一篇(C#中?与??)

    不聊闲话,上干货~!(新手初上路,大牛莫喷,谢谢!) 先说?? 在C#中有个三元运算符  X= A==null?B:A 其中A为bool型.当A为空时,X的值为B;当A不为空时,X的值为A. 现在有个 ...

  9. P1834 种花小游戏

    我只是想做壮鸭低劈啊,为什么只有状压没有DP-- 原题: 植物大战僵尸这款游戏中,还有个特别有意思的赚钱方式--种花(能长金币的花).种出来的金币需要玩家点击才能得到,或者,玩家可以购买一只蜗牛来帮助 ...

  10. POJ 3311 Hie with the Pie (状压DP)

    dp[i][j][k] i代表此层用的状态序号 j上一层用的状态序号 k是层数&1(滚动数组) 标准流程 先预处理出所有合法数据存在status里 然后独立处理第一层 然后根据前一层的max推 ...