Lua

Lua 轻量型的脚本语言,不要编译

 

Lua语句不需要分号结尾,每一行都是一条语句,写分号也没有问题

 

注释:

单行: —- 双横杆代表单行注释

多行: —[[. . ]]以—-[[开头,直到找到]]结尾

 

变量的定义:

Lua的变量定义不需要写变量类型,直接变量名 = 值,lua会根据你赋值的值来判断类型

可以使用type(a)的形式来获得a的类型

变量名:跟c#类似,但是尽量避免使用下划线+大写字母的形式,因为这种格式lua自身保留。

lua语言严格区分大小写,例如A和a不是同一个变量。

 

数据类型:

1.nil 表示空数据,相当于c#的null

2.number 小数类型, 相当于c#的int和float

3.string 字符串类型, 单引号包括的内容,双引号包括的内容,[[…]]...里包括的内容

4.boolean 布尔类型. true和false, lua把false和nil都看作假

5.table 表类型.

 

关于string类型的操作

对于一个数字字符串进行算术操作时,lua会尝试将这个数字字符串转换成一个数字来进行计算 例如。print(”3” + 3)结果:6

字符串的连接:.. 例如print(“a” .. “b”) 结果ab

字符串的长度:# 使用#来计算字符串的长度,放在字符串的前面 例如. #a

 

 

关于table:能表示数组,还能表示字典

 

Table的创建。table没有固定的大小,可以自己进行扩容

tab = {}

 

table表示数组:

tab = {"asdf","ddd”}

tab3 = {2,1,3}

使用[]进行访问,注意:lua里的索引都是从1开始的

如果对table进行扩容,可以使用tab3[4] = 10的形式

求table的长度 #

 

实际table就是键值对

对于给定一组数据,如果指定键的那么系统就是使用你指定的键,如果未指定键,系统会默认添加数字作为它的键,并且从1开始。

tab4 = {2, name = "小明", age = 250, length = 0.1, 10, 23}

例如:tab[1]的结果就是2 tab[2]的结果是10

 

对于键是字符串的形式的时:

访问有两种方式:tab4["name"] 或 tab4.name

赋值同上

对于tab4 = nil,这种方式可以时tab4让拉架回收释放内存

 

关于table的相关操作:

连接每个元素 table.concat(tab, ", ", 1, 2)

第一个参数table名,第二个参数每个元素的间隔符号,第三个参数是起始索引,第四个参数是结束索引

插入一个元素 table.insert(tab, 2,"f");

第一个参数table名,第二个参数是插入位置,可选,不写证明是最后,第三个参数是插入内容

删除一个元素 table.remove(tab, 5);

第一个参数table名,第二个参数是删除的索引,不写删除最后一个

排序: table.sort()

参数是table名,升序排序,只对默认数字索引的元素进行排序

排序的局限, 不能同时存在不同的类型,不能出现nil值

 

局部变量和全局变量

默认定义的变量都是全局变量

Local修饰的变量都是局部变量

 

运算符

数学运算符:+ - * / % lua没有++ —- += -=类似的运算符

关系运算符:> < >= <= == ~=

逻辑运算符:and or not代表与,或,非

 

 

流程控制语句

if 条件 then 语句块 end

if 条件 then true语句块 else false语句块 end

if 条件1 then 1true语句块 elseif 条件2 then 2true的语句块 end

注意:elseif是连在一起的

 

循环结构

while 条件 do 循环执行的语句块 end 注意:不符合条件时跳出循环’

repeat 循环执行的语句块 until 条件 注意:直到符合条件才跳出循环,跟c#dowhile循环不一样

for i=1,10,2 do 循环语句块 end

10:执行i的最大值, 2每次i增加的值,如果不写默认每次增加1

 

对table进行遍历

for key,v in ipairs(tab) do

print(key,v)

end

for i=1,#tab do

print(tab[i])

end

这只能对默认的索引的值进行遍历

 

for k,v in pairs(tab) do

print(k,v)

end

对所有的键值进行遍历

Lua能使用break进行循环跳出,没有continue语法

 

 

函数

定义:

function function_name()

-- body

end

或者

function_name = function ()

-- body

end

调用:函数名(),注意调用一定在方法定义之后

参数:支持可变参数(…),a = {…}获取可变传进来的参数

返回值:可以有可以没有,可以返回多返回值。例如

strings1,strings2,strings3,strings4 = GetStrings()

 

 

Lua的模块开发(面向对象)

require

提供了一个名为require来加载另一个lua文件

require “文件名” 或者 require (“文件名”)

 

Lua的模块开发由变量,函数组成的table,因此创建一个模块就是创建一个table,table内有变量和函数,最后返回这个table

 

Lua的元表

setmetatable(tab1, tab2):设置元表,对于指定的tab1设置元表tab2

getmetatable(tab1):返回tab1的元表

 

算术类元方法:__add(加), __sub(减), __mul(乘), __div(除)

访问类的元方法:__index(查询), __newindex(修改table字段时)

关系类元方法: __eq(等于),__lt(小于)

其他类元方法: __tostring(print时)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值