lua 基础教程 |
您所在的位置:网站首页 › gotoschool中文 › lua 基础教程 |
一、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") 数据类型booleanlua中只有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 数据类型numberlua中,只有一种数字类型-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") 数据类型-tabletable 可做数组和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 |