1.数据类型

string(字符串)

·运算符“+、-、*、/”等操作字符串,lua会尝试讲字符串转换为数字后操作;

·字符串连接用“..”运算符

·用“#”来计算字符串的长度(放在字符串前面)

·字符串的相关操作以及格式化操作

Table(表)

·表的初始化:

Loacl tbl1 = {};

Local tbl2 = {“apple”,”pear”,”orange”,grape};

·lua 的数组的默认初始索引一般从 1 开始

·table 不会固定长度大小,有新数据时table会自动增长,未初始化的table都是nil;

Function(函数)

·Lua中,函数被看做是“第一类值(first-class Vaule)”,可以存在变量里

·function可以通过匿名函数的方式通过参数传递

此时 函数testFun再传参的过程中 匿名函数  被执行  实际穿的参数为 匿名函数的返回值

 

thread(线程)

·在 Lua 里,最主要的线程是协同程序(coroutine)。它跟线程(thread)差不多,拥有自己独立的栈、局部变量和指令指针,可以跟其他协同程序共享全局变量和其他大部分东西。

线程跟协程的区别:线程可以同时多个运行,而协程任意时刻只能运行一个,并且处于运行状态的协程只有被挂起(suspend)时才会暂停。

协程:当钱运行的代码可以看作运行在主协程中(就像C程序中的main运行在主线程中),通过create可以创建一个协程,resume以运行此协程,直到新协程调用yield程序才能返回到“主协程”中进行

Userdata(自定义类型)

·用于表示一种应用程序或C/C++语言库所创建的类型,可以将任意C/C++的任意数据类型的数据(一般来说是struct和指针)储存到lua变量中调用。

赋值语句

·Lua可以对多个变量同时赋值,变量列表和值列表的各个元素用逗号分开,赋值语句右边的值会依次赋给左边的变量。

Eg:

a,b  =  10,2*x;  <-->       a=10; b=2*x

·遇到赋值语句Lua会先计算右边所有的值然后再执行赋值操作,所以我们可以这样进行交换变量的值:

Eg:

x, y = y, x                     -- swap 'x' for 'y'

a[i], a[j] = a[j], a[i]         -- swap 'a[i]' for 'a[j]'

·当变量个数和值的个数不一致时,Lua会一直以变量个数为基础采取以下策略:

a. 变量个数 > 值的个数             按变量个数补足nil

b. 变量个数 < 值的个数             多余的值会被忽略.

·如果要对多个变量赋值必须依次对每个变量赋值。

Eg:a,b,c = 0,0,0;

a, b = f()  -- f()如果返回两个值第一个给a,第二个给b

·访问局部变量比访问全局变量要快

Table的索引

·当索引为字符串类型时可以简化:tab[“key”]  <--> tab.key

Lua循环

1.数值循环

for var=exp1,exp2,exp3 do

<执行体>

end

Var 从exp1变化到exp2   每次变化以exp3为步长递增,并执行一次执行体

exp3 可以省略  如果省略默认值为 1

1.泛型循环

a = {"one", "two", "three"};

for i, v in ipairs(a) do

print(i, v)

end

ipairs迭代器和pairs迭代器:

pairs可以遍历表中所有的key并且除了迭代器本身以及遍历表本身还可以返回nil;

但是ipairs则不能返回nil,只能返回数字0,如果遇到nil则退出

2.Lua repeat...until 循环

repeat

statements

until( condition )

--  执行......直到

Lua 流程控制

If  条件语句1   then

执行语句1

else if  条件语句2  then

执行语句2

Else

执行语句3

End

Lua函数特征

 

·多返回值

·可变参数

Lua函数可以接受可变数目的蚕食,和C类似,在函数参数列表中使用三点...表示函数有可变的参数

可以通过select(“#”,...)来取可变参数的数量

可以通过select(n,...)来访问第n个可变参数(如果n大于参数数量则返回nil)

如果是固定参数加可变参数     固定参数必须在可变参数之前

Lua运算符

· ~=  不等于

·and  逻辑与

·or   逻辑或

·not  逻辑非

lua 语言基础的更多相关文章

  1. Cocos2d-x-Lua (2.x)脚本开发之 Lua语言基础

    从今天開始,往后将陆续更新Lua教程,主要是搭载Cocos2dx ,有不论什么疑惑或者不正确的地方.尽情指正.交流.探讨. 那么首先肯定是Lua语言基础的知识点.以下直接附上代码,凝视已经非常清楚.无 ...

  2. 【quick-cocos2d-x】Lua 语言基础

    版权声明:本文为博主原创文章,转载请注明出处. 使用quick-x开发游戏有两年时间了,quick-x是cocos2d-Lua的一个豪华升级版的框架,使用Lua编程.相比于C++,lua的开发确实快速 ...

  3. lua 语言笔记

    Lua语言基础汇总(1) -- 类型与值 基础介绍 Lua是一种动态类型的语言.在语言中没有类型定义的语法,每个值都带有其自身的类型信息.在Lua中有8种基本类型,分别是: nil(空)类型 bool ...

  4. 51CTO专访淘宝清无:漫谈Nginx服务器与Lua语言

    http://os.51cto.com/art/201112/307610.htm 说到Web服务器,也许你第一时间会想到Apache,也许你会想到Nginx.虽然说Apache依然是Web服务器的老 ...

  5. 编译并使用Lua语言

    Lua是一个小巧的脚本语言,该语言设计的目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能. 可扩展性.Lua的扩展性非常卓越,可以通过Lua代码或C代码扩展,很多功能可以通过外部库来扩 ...

  6. Go语言基础之变量和常量

    Go语言基础之变量和常量 变量和常量是编程中必不可少的部分,也是很好理解的一部分. 标识符与关键字 标识符 在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变量名.常量名.函数名等等. Go语 ...

  7. lua脚本之lua语言简介以及lua的安装

    本博主不擅于进行文字创作,所以,相当一部分文字皆复制于其他博文.还希望能够得到谅解.  一.Lua语言简介 Lua是一个免费的开源软件,可以免费用于科研及商业.Lua具有一个专家团队在维护和升级,其设 ...

  8. Unicode与UTF-8互转(c语言和lua语言)

    1. 基础 1.1 ASCII码 我们知道, 在计算机内部, 全部的信息终于都表示为一个二进制的字符串. 每个二进制 位(bit)有0和1两种状态, 因此八个二进制位就能够组合出 256种状态, 这被 ...

  9. Lua语言中文手册 转载自网络

    Programming in LuaCopyright ® 2005, Translation Team, www.luachina.net Programming in LuaProgramming ...

随机推荐

  1. sketch格式文件转换成psd

    在做响应式页面的时间需要把px单位转换成rem才可以,但是sketch文件的格式不能随意转换成rem,最高只能到CSS rem 16px,不能满足我们的需求,因此需要一个工具来转换成psd格式文件,他 ...

  2. 中标麒麟龙芯平台--docker基础镜像制作

    Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源.Docker 的出现为开发人员和运维人员带来了极大的便利.Docker在X86下常见的发行版Linux如Ub ...

  3. temp 和 tmp 文件

    TMP和TEMP文件是各种软件或系统产生的临时文件,也就是常说的垃圾文件.Windows产生的临时文件,本质上和虚拟内存没什么两样,只不过临时文件比虚拟内存更具有针对性,单独为某个程序服务而已.而它的 ...

  4. spring的基于注解的IOC配置

    1.配置文件配置 <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http: ...

  5. RNN和LSTM

    一.RNN 全称为Recurrent Neural Network,意为循环神经网络,用于处理序列数据. 序列数据是指在不同时间点上收集到的数据,反映了某一事物.现象等随时间的变化状态或程度.即数据之 ...

  6. java学习笔记--从c/c++到java转变

    final修饰符1)final变量final表示“最后的,最终的”含义,变量一旦赋值后,不能被重新赋值.被final修饰的实例变量必须显示指定初始值.final修饰符通常和static修饰符一起来创建 ...

  7. 【interview——Ali】project interview_18 summer

    完全没有准备的一次面试……意外 两部分:Word2vec + 中位数 (还有聊对科研的想法和自己研究能力的评价? word2vec //解释模型 原本是one-hot,存在缺点:稀疏和无法表现语义,词 ...

  8. Python爬虫基础之lxml

    一.Python lxml的基本应用 <html> <head> <title> The Dormouse's story </title> </ ...

  9. WPF 10天修炼 第二天- XAML语言

    XAML是什么 XAML是一种与.NET CLR紧密集成的声明性UI标记语言.XAML中的对象元素对应到CLR中的类型或结构.XAML命名空间对应到CLR中类的命名空间,元素类型则对应到CLR中的类型 ...

  10. LeetCode 13. Roman to Integer(c语言版)

    题意: Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol Value ...