悉野小楼

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

lua学习测试脚本

复制代码
复制代码
function msg(...)
    -- 可变参数转表方法1
    local arg = table.pack(...)
    print(arg[1], arg[10])

    -- 可变参数转表方法2
    local tab = {...}
    print(tab[2])

    -- 可变参数数量
    local n = select('#', ...)
    print('num:', tostring(n))

    print(nil or 1, false and 3, 5 and 6)
end
msg(12,52,25,21)
复制代码
--输出:

12 nil
52
num: 4
1 false 6

复制代码
function msg(...)
    for i, j in pairs({...}) do
        print(i, j)
    end
end

msg(10,20,30)
--[[
1    10
2    20
3    30
复制代码

]]-- 

tt ={
        1,2,3,
        ["20"] = "200",
        Age = 20        ,
        ["Age"] = 30,
        ddr =
                {
                    test = 1,
                    test2 = 3
                }
    }
tt.JOne = {Gender = "", age = "28"}
print(type(tt["20"]).."10".."\n"..tt["JOne"]["Gender"])
print(tt.Age)
local a = 3 and 4 or 5;
print(5%3)


--[[注释]]--

while a > 0
do
    print(a, not(a~=b))
    a = a - 1
end



for c=250.5
do
    print(c)
end

print((c or 1).."\f")


html = [[
    <html>
        <head>
            <title>testPage</title>
        </head>
        <body>
            something
        </body>
    </html>
]]

print(html)
--可返回多结果
function s()
return 234
end

print(s())
--面向对象
t =
{
    age = 13,
    gender = "male",
    add =     function(sel, n)
                return sel.age + n
            end
}

print(t.add(t, 12))
print(t:add(12)) -- 与上面一个函数等价 t:function(data) <==> t.function(t, data)

a,b,c = 123
if a > b then
print(a)
elseif a > c then
print(b)
else
print(c)
end

repeat
    print(c)
    c = c - 1
until c ~= 2

复制代码

GLshader

local function t1()
    test = 5
end

t1()
print(tostring(test))

输出:5, test前面没加local, 就是本文件的全局变量

GLshader的lua学习笔记

 

os.Date("%Y-%M-%d %H:%M:%S") 格式化显示时间, os.Date也可以不用参数, 就是默认输出

Y可以换成y, 这样就是两位的年份

local config = {}

local tmp = config["a"] or "emtpty"

local times = user_data["times"] or 0

or的左边为空, 会返回右边的表达式

os.time() 返回时间戳

lua同一个变量名,可以改变类型

复制代码
function sendToPlayer(player, msg)
    if type(player) == 'table' then
        -- 如果player是表格, 把player赋值为整数
        player = player.id
    end
    print(player)
end
sendToPlayer({id=5}, 'hello5')
sendToPlayer(6, 'hello6')
复制代码

 

复制代码
-- lua正则表达式例子, 按.分割成模型与方法
-- 参考:https://www.lua.org/manual/5.4/manual.html#6.4.1
local func = "mail.getUserMailList"
local module, method = func:match "([^.]*).(.*)"
-- 下面两种写法与上面一样
-- local module, method = func.match(func, "([^.]*).(.*)")
-- local module, method = string.match(func, "([^.]*).(.*)")
print (module, method)
-- 输出 mail    getUserMailList

-- string.pack, 把数字改成二进制的字符串(除了>大端或<小端), 前面有几个字母, 后面跟几个数字
-- 参考:https://www.lua.org/manual/5.4/manual.html#6.4.2
-- B:an unsigned byte (char) H: an unsigned short (native size) L: an unsigned long (native size)
local str = string.pack(">BHB",  1,2,3)
--str的值为'\1\0\2\3'
local result = string.pack(">s4","hello")
-- result '\0\0\0\5hello'
-- pack > 表示按大端顺序。s4 字符串转成二进制后, 在前面补个4字节无符号整数, 用来表示字符串的长度, 一般网络中用s2, 两个字节, 16位无符号整数, 可以表示65535长的字符
-- local orgin = string.unpack(">s4",result)

local data = string.pack(">I4", 123456)  -- 打包一个无符号4字节整数
复制代码

 

posted on   悉野  阅读(718)  评论(1编辑  收藏  举报

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示