lua 基础教程

您所在的位置:网站首页 gotoschool中文 lua 基础教程

lua 基础教程

2023-04-02 04:52| 来源: 网络整理| 查看: 265

一、lua安装

linux:

lua官网

执行上图命令+make install

lua会安装到/usr/local下,你也可以修改Makefile中的INSTALL_TOP来修改安装的根路径,

注意将lua所在目录添加至PATH

lua安装内容包含如下:

测试:

交互式:

脚本:

二、基本语法

注释

print("hi") -- 单行注释 --[[ 多行注释 ]]--

标识符

标识符由字母、数字、下划线 组成,只能以下划线和字母开头,不要以下划线+大写字母组成标识符。

全局变量

没有赋值的变量为nil

print(a) a=1 print(a) a=nil print(a)

三、数据类型 数据类型nil

没有任何有效值,就是一个nil。

nil由删除的变量,nil的类型为'nil'

-- 定义一个table,相当于map myTab = {key1 = "value1", key2 = "value2"} for k,v in pairs(myTab) do print(k.."-"..v) end print("删除key1") myTab.key1 = nil for k,v in pairs(myTab) do print(k.."-"..v) end print(x) print(x == nil) print(type(x) == "nil") 数据类型boolean

lua中只有false和nil 为false,其余都为true

if false or nil then print("nil is true") else print("nil is false") end if 0 then print("0 is true") else print("0 is false") end

数据类型number

lua中,只有一种数字类型-number

8字节、双精度

print("测试number") a=10 print(type(a)) 数据类型String

用单引号或双引号

print('单引号字符串') print("双引号字符串")

[[]]可以包含换行的字符串

i=[[ 我是中国人 我是亚洲人 我是地球人 我是太阳系人 ]] print(i)

字符串与数字做数学运算时,优先将字符串转换成数字

print("测试字符串+") print("1"+1) print("1"+"1")

如果字符串不能转成数字将报错

print("测试字符串+") print("1"+1) print("1"+"1") print("x"+1)

如果实现java中字符串连接,使用 .. 符号

print("测试字符串..") print("1"..1) print("1".."1") print("x"..1)

计算字符串长度

print(#"aa") 数据类型-table

table 可做数组和map

数组下标从1开始。

print("测试table") tab1={} tab2={"v1","v2","v3"} tab3={key1="value1",key2="value2",key3="value3"} print("-----打印tab3-----") for k,v in pairs(tab3) do print(k.."="..v) end print("-----打印tab2------") for k,v in pairs(tab2) do print(k.."="..v) end print("-----按数组索引打印数组------") print(tab2[1]) print(tab2[2]) print(tab2[3]) print("-----nil相当于删除------") tab3["key1"] = nil for k,v in pairs(tab3) do print(k.."="..v) end 数据类型-function

斐波拉系数列:

function fib(n) if n == 1 or n == 2 then return 1 else return fib(n-1)+fib(n-2) end end print("fib(10) = " ..fib(10))

匿名函数:

print("----测试匿名函数----") function ff(tab,func) for k,v in pairs(tab) do print(func(k,v)) end end tab1={key1="v1",key2="v2"} ff(tab1, function(k,v) return k.."="..v end )

数据类型-其他

thread:协程

userdata:存储c、c++数据类型。

四、变量

变量

lua变量分为全局变量,局部变量

全局变量:默认,全局有效。

局部变量:从作用范围开始到作用范围结束。需加local 修饰。

a=1 function ff() local b=1 end print(a) print(b)

变量的赋值

function ff2() return 2,3 end a=1 b=2 -- 交换 a,b = b,a print(a,b) -- 变量个数值的个数,不足nil a,b,c,d = 1,2,3 print(a,b,c,d) -- 多返回值的函数 a,b = ff2() print(a,b)

索引

对table中的元素进行访问

tab = {k1="v1",k2="v2",k3="v3"} print(tab["k1"]) print(tab.k1) 五、循环

while(循环条件)

do

执行体;

对循环条件的控制;

end

a=1 while(a10) 六、流程控制

if (成立) then

执行体1

else

执行体2

end

七、函数

函数定义

范围:默认local

格式:

function 函数名(参数列表)

函数体;

return 返回值

end

-- 最大值函数: function max(arg1,arg2) local result = arg1 if (arg1 < arg2)then result = arg2 end return result end print(max(1,2))

多返回值函数

function findMax(arr) local index=1; local value=arr[index]; for k,v in pairs(arr) do if (v > value)then index = k value = v end end return index,value end index,value = findMax({1,3,5,7,9}) print("最大值索引:"..index.."最大值:"..value)

可变参数

可变参数:arg = {...}

function sum(...) local arg = {...} local result=0; for k,v in pairs(arg) do result = result + v end return result end print("和为:"..sum(1,2,3,4,5))

获取可变参数的个数: #arg

function Avg(...) local arg = {...} local result=0; local count = #arg; for k,v in pairs(arg) do result = result + v end return result/count end print("avg为:"..Avg(1,2,3,4,5,6))

函数参数列表中,存在固定参数和可变参数,固定参数全部写在前面

function fmtPrint(fmt,...) io.write(string.format(fmt,...)) end fmtPrint("%s\n","helloworld") fmtPrint("%d+%d = %d\n",1,1,2)

选取可变参数的值:select

function ff4(...) a,b,c = select(3,...) return a,b,c end print(ff4(1,2,3,4,5,6,7,8,9)) 八、运算符

算术运算符

+ 加 - 减 * 乘 / 除 % 取余 ^ 乘幂 - 负号 = 等号

关系运算符

== 等于

~= 不等于

>大于

>= 大于等于



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3