lua基础部分(变量,数据类型, 运算符, 语句)

空扰寡人 提交于 2020-01-18 02:51:13

这里重点总结一下lua基础,几个简单的点,记录下来,方便以后查看,不是很详细,稍微概括了一下。也希望可以帮到lua初学者。

Lua简介:

Lua脚本可以很容易的被C/C++代码调用,也可以反过来调用C/C++的 函数,这使得Lua在应用程序中可以被广泛应用。不仅仅作为扩展脚本, 也可以作为普通的配置文件,代替XML,ini等文件格式,并且更容易理解 和维护。

Lua由标准C编写而成,代码简洁优美,几乎在所有操作系统和平台上 都可以编译,运行。一个完整的Lua解释器不过200k,在目前所有脚本引 擎中,Lua的速度是最快的。这一切 都决定了Lua是作为嵌入式脚本的最 佳选择。

 

一、变量

lua中变量的命名规则和C语言中一样:字母数字下划线,不能以数字开头,区分大小写,不能是关键字。(这估计都顺嘴就出来了)

变量的赋值规则和C语言,C++里不是很一样,需要注意以下两点:

如果变量的个数小于值的个数,用nil补充。(下面的数据类型中会详细介绍)

如果变量的个数大于值的个数,则多余的值则将被忽略。

Lua中的变量也分为全局变量和局部变量

全局变量:a = 5;

局部变量:local a = 5;

二、数据类型

lua中的数据类型和C语言中的数据类型不太一样,C语言中有多种数据类型,比如数字就有int,short,long,float,double还有枚举类型等等好多,但是在Lua语言里,数据类型只有八种:number, string, nil, bool, function, table, userdate, thread (userdate和thread在开发中不常用,所以下面就不做过多介绍了)

number:指任意实数。包括了 int,short,long,float,double。。。而且number如果有小数,除不尽的情况下,不只是精确到小数点后八位。

string:这个和C#里有一定区别,在C#里,对一个字符串重新赋值,是重新复制一块空间,进行赋值,原字符串所占空间不销毁。但是在Lua里面,就是直接在这块空间上改写字符串的内容。

数字和字符串之间的转换

将数字转换成字符串,可以强转,用tostring(),或者隐式转换(10 .. "Mumu"),需要注意,数字后面必须有空格,不然系统就默认第一个点为小数点

字符串转换为数字,用tonumber(),但是一定要保证字符串是纯数字,不然编译错误,(不能通过ascll码转换)。

nil:类似于C中的null,也可以用来对变量的删除操作

bool:这个和其他语言也有很大不一样,C语言中是0或者false为假,其余都为真,而在Lua语言里面,只有nil或者false为假,其余为真,包括0,这个概念一定要记住,不要和其他语言混淆。

 function:方法,使用function需要注意,必须先声明,后调用,否则报错。而且可以有多个返回值。

table:表,相当于数组、字典、列表...以键值对形式存储,索引值从一开始递增一

和数组一样,有两种初始化方式:

方式一:先定义一个空表,然后初始化。

tab = { },

tab[1] = "Mumu"

tab["age"] = "15"

方式二:定义的同时初始化

tab = {"Mumu",age = 15}

遍历输出表中元素

这时有两种遍历方式。第一种:

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

输出结果为

1    Mumo
[Finished in 0.1s]

第二种:

for k,v in pairs(tab) do
    print(k,v)
end

输出结果为:

1    Mumo
name    15
[Finished in 0.1s]

由此可以看出,ipairs只能遍历索引为整数的元素,pairs可以遍历表中所有元素。

三、运算符

Lua中的运算符有,算术运算符,关系运算符,逻辑运算符

算术运算符:+ - * / = % ...

关系运算符:> < >= <= == ~= (Lua中的不等于是~=)

逻辑运算符:and or not (相当于C语言中的&& || !)

and:当表达式一位真的时候 返回表达式二的值,当表达式一为假的时候,返回表达式一的值

or:当表达式一为真的时候,返回表达式一的值,当表达式一为假的时候,返回表达式二的值

not:取反,值为true或者false

四、语句

语句分为:

赋值语句,条件语句(没有switch),循环语句

条件语句:if ... then end   

循环语句: for ... do ... end    while ... do ... end      repeat... until....end

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!