Lua基本教程

Lua基本教程Linux 系统上安装 curl R Ohttp www lua org ftp lua 5 3 0 tar gztarzxflua 5 3 0 tar gzcdlua 5 3 0makelinuxte 系统上安装 LuaGithub 下载地址 https github com rjpcomputing luaforwindow releases8 种数据类型 number 只有双精度

--Linux 系统上安装 --curl -R -O http://www.lua.org/ftp/lua-5.3.0.tar.gz --tar zxf lua-5.3.0.tar.gz --cd lua-5.3.0 --make linux test --make install --Window 系统上安装 Lua --Github 下载地址:https://github.com/rjpcomputing/luaforwindows/releases --8种数据类型 --number(只有双精度类型double),string(字符串间用..连接,而不是+,+表示计算), --boolean,nil, --table(即动态的关联数组,声明形式a={},赋值形式a[],获取形式a[]或a.i(当索引为字符串类型时的一种简化写法),索引从1开始),function(可作为参数传递,支持函数式编程) --thread,userdata --斐波那契数列 function fib(n) if n <= 2 then return 1 end prev2 = 1 prev1 = 1 result = 0 for _ = 3, n, 1 do result = prev2 + prev1 prev2 = prev1 prev1 = result end return result end print(fib(50))-- --泛型for循环 --1 one --2 two --3 three a = { "one", "two", "three" } for i, v in ipairs(a) do print(i, v) end --泛型for循环,达到continue效果,当v=3时跳过(lua里没有continue关键字) --1 --2 --4 --5 arrays = { 1, 2, 3, 4, 5 } for _, v in ipairs(arrays) do flag = true while (flag) do flag = false if (v == 3) then break end print(v) end end --while循环 --b: 2 --b: 1 b = 2 while (true) do print([[b]] .. [[:]], b) b = b - 1 if b == 0 then break end end --repeat循环(类似Java中的do while) --c: 1 --c: 2 c = 1 repeat print('c' .. ':', c) c = c + 1 until (c == 3) --一个函数返回多个值 --1 2 3 function add(num1, num2) return num1, num2, num1 + num2 end print(add(1, 2)) --方法重载,可变参数 --6 function add(...) --局部变量 local rs = 0 for _, v in ipairs(...) do rs = rs + v end return rs end print(add({ 1, 2, 3 })) --string常用方法 s = 'hello' s1 = 'HELLO' print(string.upper(s))--HELLO print(string.lower(s1))--hello --连接 print(s .. s1)--helloHELLO --替换 print(string.gsub(s, 'l', 'x'))--hexxo 2(替换了2次) print(string.gsub(s, 'l', 'x', 1))--hexlo 1(替换了1次) --查找 print(string.find(s, 'l'))--3 3(从1开始的起始索引为3,结束索引为3) print(string.find(s, 'l', 4))--4 4(从4开始的起始索引为4,结束索引为4) print(string.find(s, 'l', 5))--nil(从5开始的起始索引为nil,找不到) print(string.find(s, 'a'))--nil(找不到) --求长度 print(string.len(s))--5 print(#s)--5 --截取 print(string.sub(s, 2))--ello print(string.sub(s, 2, 3))--el print(string.sub(s, 2, 4))--ell --反转 print(string.reverse(s))--olleh --拷贝 print(string.rep('abc', 2))--abcabc --表操作 t = { { 3, 2, 1 }, { 'q', 'w', 'e' } } --新增 --方式一 t[3] = { 'a', 'b' } --方式二 --table.insert(t, { 'a', 'b' }) --修改表t中第3个元素的值 t[3] = { 4, 5, 6 } --删除 --t[3] = nil --table.remove(t) for i, v in pairs(t) do local r = '' for i, v in pairs(v) do r = r .. v end print('{' .. r .. '}') end --表排序 fruits = { "banana", "orange", "apple", "grapes" } print("排序前") for k, v in ipairs(fruits) do print(k, v) end table.sort(fruits) print("排序后") for k, v in ipairs(fruits) do print(k, v) end --元表(类似Json) mt = { a = 'a', b = 'b' } for i, v in pairs(mt) do print(i, v) end --模块 require('com.lyf.lua.module1') print(module.a) module.func1() module.func3()

输出:

lua.exe com/lyf/lua/test.lua  1 one 2 two 3 three 1 2 4 5 b: 2 b: 1 c: 1 c: 2 1 2 3 6 HELLO hello helloHELLO hexxo 2 hexlo 1 3 3 4 4 nil nil 5 5 ello el ell olleh abcabc {321} {qwe} {456} 排序前 1 banana 2 orange 3 apple 4 grapes 排序后 1 apple 2 banana 3 grapes 4 orange a a b b 你好 这是一个公有函数! 这是一个私有函数! 

 

参考:Lua 教程 | 菜鸟教程

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/175916.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午11:07
下一篇 2026年3月26日 下午11:07


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号