第1章:起点

Chunks: 语句块

每个语句结尾的分号是可选的,如果同一行有多个语句最好使用分号分隔;

dofile("lib1.lua")  -- 执行lua文件

全局变量:局部变量用local修饰,否则就是全局变量

保留字:

if then else elseif end

and or not

fuction return end

true false nil

while ... do .. end    break

repeat ... until ...

for ... in ... do ... end

local

注释:单行 --

多行 --[[ XXX  --]]

命令行: lua [option] [script [args]]

-e: 直接传入命令,如:lua -e "print(math.sin(12))"

-l: 加载文件,如:lua -la -lb,执行a.lua和b.lua文件

-i: 交互模式,

第2章 类型和值

8个基本类型: nil\boolean\number\string\userdata\function\thread\table

通过type()获取类型

转义字符: \[  \]

第3章 表达式

算术运算符

二元运算符: + - * / ^ (加减乘除幂)

一元运算符: -

关系运算符

<  >  <=  >=  ==  ~=

nil只和自己相等

逻辑运算符

and or not

a ? b : c

连接运算符

..    -> string

{}   => days = {"sunday", "monday"}

days[1]  索引从1开始!!!

a = {x=0, y=1}   <=>  a={}; a.x=0; a.y=1  <=>  {["x"]=0, ["y"]=1}

{"red", "green", "blue"}    <=>  {[1]="red", [2]="green", [3]="blue"}

不推荐数组下标从0开始,否则很多标准库不能使用

第4章 基本语法

赋值语句:  x,y = y,x

Lua总是会将等号右边的个数调整到与左边的个数一致。若不够,以nil填充,若有多,则丢弃。

do ... end   <=>  C++的{}

循环语句:

while condition do

statements

end

repeat

statements

until conditions;

for var=exp1, exp2, exp3 do  --注意:exp1,exp2,exp3只会计算一次!!!

loop-part

end

for i,v in ipairs(a) do print(v) end

break和return语句用于跳出当前块。

break和return只能是一个块的最后一条语句。(程序块或end、else、until前的一条语句)

可以通过do return end来规避

第5章 函数

调用函数的时候,如果参数列表为空,必须使用()表明是函数调用,当函数只有一个参数并且这个参数是字符串或者表构造的时候,()可有可无。

Lua函数实参和形参的匹配与赋值语句类似,多余部分被忽略,缺少部分用nil补足

特殊函数unpack,数组作为参数返回数组的每个元素

可变参数:  func(...)

Lua将函数的可变参数放在一个叫arg的表中,除了参数以外,arg表中还有一个域n表示参数的个数

哑元变量:  _

local _, x = string.find(s, p)

命名参数,具名实参:

rename{old="temp.lua", new="temp1.lua"}

当实参只有一个table构造式时,函数调用的括号是可有可无的。

最新文章

  1. 【C#进阶系列】25 线程基础
  2. phpAdmin安装
  3. Codeforces 611C New Year and Domino(二维前缀和)
  4. Javascript基础系列之(六)循环语句(while语句)
  5. C语言 宏/macor/#define/
  6. 模拟google分页效果
  7. Fragment的生命周期和Activity之间的通信以及使用
  8. POJ3009 Curling 2.0(DFS)
  9. CString 的一些事
  10. C语言的本质(27)——C语言与汇编之计算机结构
  11. pycharm的安装及用法
  12. Js修改input值后怎么同步修改绑定的v-model值
  13. USB知识汇总
  14. Python类与对象的理解
  15. PHP 高并发秒杀解决方案
  16. BitBlt 函数 详解, StretchBlt、SetStretchBltMode、SetBrushOrgEx 按句柄截图、直接截取缩略图
  17. db2安装
  18. 使用spring的JavaMail发送邮件
  19. ASP.NET MVC 提高运行速度的几种性能优化方法
  20. 【转载】keil(MDK-ARM)的调试使用

热门文章

  1. 使用Unity在MVC上实现动态注入
  2. 总结前端JQ常用的一些操作手法(慢慢完善)
  3. Kernel Regression from Nando&#39;s Deep Learning lecture 5
  4. [转]Python存取XML方法简介
  5. 《javascript高级程序设计》笔记4.1.4:检测类型
  6. pyspider安装后,点击run,报pyhton has stop working或python已停止运行的错误
  7. Pseudoprime numbers(POJ 3641 快速幂)
  8. 典型的DIV CSS三行二列居中高度自适应布局
  9. TEA加密算法的文件加密和解密的实现
  10. javascript之Arguments