快速定位

switch

for 循环的使用

table + insert +remove 表的遍历、插入、删除的使用

Lua的数据类型

nil、boolean、number、string、function、table、userdata、thread

定义变量

local a = "hello world"
local b = 'hello world'
local c = 1
local d = 1.0
local e,f = 1
local g,h = 1,2

print("a=",a)  --hello world
print("b=",b)  --hello world
print("c=",c)  --1
print("d=",d)  --1.0
print("e=",e)  --1
print("f=",f)  --nuk
print("g=",g)  --1
print("h=",h)  --2

Switch 判断

local Args = 2

local switchName = {
	[1] = function ()
		print("1")
	end,
	[2] = function ()
		print("2")
	end,
	[3] = function ()
		print("3")
	end -- 最后一个逗号要省略
}

-- 使用switch
switchName[Args]() -- 输出2

if 逻辑判断

if XXXXX then

end


如果 nil 进行比较 需使用 "nil"
if a == "nil" then
end
local abc = 2

if abc == 1 then
    print("A")
elseif abc == 2 then
    print("B")
end

-- 输出 B

print 控制台输出

-- 输出a变量的值
print(a) 

-- 输出a变量的类型
print(type(a)) -- 结果有string、num、nil、table

for 循环

-- 定义数组araay
local araay = {"zhangsan","lisi","wangwu"}

-- 去除数组第2个元素 lisi
print(araay[2])

-- Lua 里表的默认初始索引一般以 1 开始
for k, v in pairs(araay) do
	print("Key:", k)
	print("Value:", v)
	if k == 2 then
		break
	end
end

-- 输出结果
lisi
Key:	1
Value:	zhangsan
Key:	2
Value:	lisi

for循环10次

	for  i=1,10  do
		local oneItem = math.random(0,2)
		print(oneItem)
	end

function 函数

-- 定义一个函数
function APlusB(a,b)
   return a + b;
end

-- 调用函数
local c = APlusB(1,2);
print(c)

-- 输出 3

可变参数 ...

local function moreArgs(...)
	for k,v in pairs{...} do -- 注意方法用小括号,参数应花括号
		print(k.."="..v)
	end
end

moreArgs(1,2,"你好世界")
print("---------")
moreArgs(4,5,6,"我很好")

Lua常用方法

-- 格式化字符串
print( string.format("the value is:%d",4) )

-- 转化为 string
print( string.format("你好世界".." Hei") )

-- 输出
the value is:4
你好世界 Hei

数组

想了解,请去https://www.lua.org/cgi-bin/demo 在线测试一下

array = {"Lua", "Tutorial"}

-- 注意 i应该从1开始 才能取到有效元素,否则i=0 取到的元素是nil
for i= 0, 2 do
   print(array[i])
end

print("----")

for index,value in ipairs(array) do
    print(index..":"..value)
end

数据类型转换

tonumnber("1")
tostring(1)

表 table

	-- 定义一个表 tb 里面有4个元素
 	local tb = {
		[1] = "A";
		[2] = "B";
		[3] = "C";
		[4] = "D";
	}
	
	print("mytable 索引为 1 的元素是 ", tb[1])
	print("----遍历Table-----")
	for k,v in ipairs(tb) do
            print(k,v)
	end

	print("----删除索引1号元素,然后遍历Table-----")

	-- 删除tb表 索引为1的值
	table.remove(tb ,1)
	for k,v in ipairs(tb) do
            print(k,v)
	end

	print("----在索引1的位置上,插入元素A,然后遍历Table-----")

	-- 插入到tb表 索引为1 值为"A"
	table.insert(tb ,1 ,"A")
	for k,v in ipairs(tb) do
            print(k,v)
	end
	-- 最终表的数据还是最初定义的样子

可能需要的表 字符串互转

function ToStringEx(value)
    if type(value)=='table' then
       return TableToStr(value)
    elseif type(value)=='string' then
        return "\'"..value.."\'"
    else
       return tostring(value)
    end
end

function StrToTable(str)
    if str == nil or type(str) ~= "string" then
        return
    end
    
    return loadstring("return " .. str)()
end

function TableToStr(t)
    if t == nil then return "" end
    local retstr= "{"

    local i = 1
    for key,value in pairs(t) do
        local signal = ","
        if i==1 then
          signal = ""
        end

        if key == i then
            retstr = retstr..signal..ToStringEx(value)
        else
            if type(key)=='number' or type(key) == 'string' then
                retstr = retstr..signal..'['..ToStringEx(key).."]="..ToStringEx(value)
            else
                if type(key)=='userdata' then
                    retstr = retstr..signal.."*s"..TableToStr(getmetatable(key)).."*e".."="..ToStringEx(value)
                else
                    retstr = retstr..signal..key.."="..ToStringEx(value)
                end
            end
        end

        i = i+1
    end

     retstr = retstr.."}"
     return retstr
end
特殊说明:
上述文章均是作者实际操作后产出。烦请各位,请勿直接盗用!转载记得标注原文链接:www.zanglikun.com
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取全部资料 ❤