lua学习
在lua中,一切都是变量,除了关键字。
1、注释:
单行注释: 连续两个减号“--”表示注释的开始,一直延续到行末。相当于C语言中的“//”
多行注释:由“--[[”表示注释开始, “]]”表示注释结束。类似于C语言中的“/*..........*/”
2、编程
在lua中,语句之间可以用分号“;”, 也可以用空白隔开。 如果多个语句在同一行中时,建议使用分号隔开。
lua有好几种程序控制语句:
条件控制:
if 条件
then … elseif 条件
then … else … end
while循环
while 条件
do .... end
repeat循环
repeat .... until 条件
For循环:
for 变量 = 初值,终点值,步进 do … end
For循环:
for 变量1,变量2,… ,变量N in表或枚举函数 do … end
注意一下,for的循环变量总是只作用于for的局部变量,你也可以省略步进值,这时候,for循环会使用1作为步进值。
语句块:
使用 do和end进行。相当于C语言中的"{ }".
赋值语句:
在lua中被强化了,可以同时给多个变量赋值。
a,b,c,d=1,2,3,4
默认情况下,变量总是全局的。要使用局部变量,在第一次赋值的时候,需要用"local"说明。
local a,b,c=1,2,3 全是局部变量
数值运算:
支持+、—、*、/运算,还支持"^",表示指数乘方运算,例如2^3=8
连接两个字符串,可以使用“..”运算符。
关键字:
and break do else elseif end false for function if in local nil not or
repeat return then true until while
变量类型:
怎样确定一个变量类型呢?可以使用type()函数来检查。
lua支持的类型有以下几个:
Nil:空值,所有没有使用过的变量都是Nil。Nil既是值,又是类型。
Boolean:布尔值。
Number: 数值,在lua里,数值相当于C语言的double
String:字符串,字符串可以包含'\0'字符的。
Table:关系表类型
Function:函数类型。
Userdata:这个类型专门用来和lua的宿主打交道。宿主通常是用C和C++来编写的。在这种情况下,Userdata可以是宿主的任意数据类型。常用的有struct和指针。
Thread:线程类型,在lua中么有真正的线程。lua中可以将一个函数分成几部分运行。
逻辑运算符
逻辑运算符认为false和nil是假(false),其他为真,0也是true
and和or的运算结果不是true和false,而是和它的两个操作数相关
a and b -- 如果a为false,则返回a,否则返回b
a or b -- 如果a为true,则返回a,否则返回b
Metatables and Metamethods
元表与元方法,这是一个很重要的概念。可以为table设置或指定metatable,用于指定某些运算符对应的操作方法。
* setmetatable(table, meta_table) 设置元表
* getmetatable(table) 获取元表
这个元素,可以是个函数。
tb = {
----> <metatable> = {
__add = function : xxx 加法操作
__sub = function : xxx 减法操作
__mul = function : xxx 乘法操作
...
} [1] = 20
[2] = 40
...
} unpack
unpack它接受一个数组(table)作为参数,并默认从下标1开始返回数组的所有元素 赋值语句
当变量个数和值的个数不一致时,Lua会一直以变量个数为基础做一下策略
变量个数 > 值的个数 按变量个数补足nil
变量个数 < 值的个数 多余的值会被忽略
最新文章
- CEGUI0.8.4引入到自己工程中
- Nginx中文手册
- linux网络协议
- 51nod 1163 最高的奖励(贪心+优先队列)
- Java SE --- 自增自减
- C# 白话系列之——白话委托
- SAXParser 解析器和 XMLEventReader(读取XML文档)
- 关于Daydream VR的最直白的介绍
- linux 知识整理1linux 常见的目录
- struct 和 class 不同点
- Ubuntu 15.10 x64 安装 Android SDK(转)
- java 无法连接ftp服务器(500 OOPS: cannot change directory)
- [Python Study Notes]Socket模拟ssh执行cmd并记录遇到的问题
- 关于ef+codefirst+mysql/dapper(dbFirse)(入门)
- Android开发中如何使用RecyclerView
- Class ";xxxxx";defined without specifying a base class
- mui.init方法配置
- javaweb防止表单重新提交
- java多线程例子(生成者和消费者)
- Linux(CentOS 6.5) 下安装MySql 5.7.18 二进制版本粗浅攻略