LUA的学习

Lua的编写方法:

在 Lua 中,变量默认是全局变量,除非你使用 local 明确声明为局部变量。

在 Lua 中,函数的编写使用 `function` 关键字,语法如下:

function 函数名 (参数列表)

-- 函数体

return 返回值(可返回多个值)

end

示例:

  1. 无参数无返回值的函数
Lua 复制代码
   function sayHello()

       print("Hello, world!")

   end

sayHello() -- 调用函数

  1. 带参数无返回值的函数
Lua 复制代码
   function greet(name)

       print("Hello, " .. name .. "!")

   end

greet("apple") -- 输出: Hello,apple!

  1. 带参数带返回值的函数
Lua 复制代码
   function add(a, b)

       return a + b

   end



   local result = add(3, 5)

   print(result)  -- 输出: 8
  1. 可变参数函数
Lua 复制代码
   function sum(...)

       local args = {...}

       local total = 0

       for i, v in ipairs(args) do

           total = total + v

       end

       return total

   end



   print(sum(1, 2, 3, 4))  -- 输出: 10

匿名函数(函数作为值)

Lua 支持将函数赋值给变量,或者作为参数传递给其他函数:

Lua 复制代码
local multiply = function(a, b)

    return a * b

end



print(multiply(2, 3))  -- 输出: 6

递归函数

Lua 复制代码
function factorial(n)

    if n == 0 then

        return 1

    else

        return n * factorial(n - 1)

    end

end



print(factorial(5))  -- 输出: 120

-- 逻辑控制:

Lua 复制代码
a = 0

b = 5

while (a < 10) do

    if (a > b)

    then

        print("a is greater than b")

    else

        print("a is less than b")

    end

    if (a == 8)

    then

        goto test

    end

    a = a + 1

end



::test::

local start = a

for a = start, 10, 1 do

    print("a=" .. a)

end

-- 数据

Lua 复制代码
-- table

table = { "city1", "city2", "city3" }

table[4] = "city4"



for i, city in ipairs(table) do

    print(i .. ": " .. city)

end



for i = 1, #table do

    print(i .. ": " .. table[i])

end



--print(table.unpack(table))



-- map

map = { key1 = "value1", key2 = "value2", key3 = "value3" }

map["key4"] = "value4"



for k, v in pairs(map) do

    print(k .. ":" .. v)

end



--mixed

mixed = { "city1", key1 = "value1", "city2", key2 = "value2", "city3", key3 = "value3" }

mixed[3] = "city4"

mixed[5] = "city5"

mixed["key4"] = "value4"



for i = 1, #mixed, 1 do

    print("mixed[" .. i .. "] == " .. mixed[i])

end

for k, v in pairs(mixed) do

    print(k .. " = " .. v)

end --实际上均为键值对,默认键名为数字,输出时顺序会打乱



-- (global) mixed: {

--     key1: string = "value1",

--     key2: string = "value2",

--     key3: string = "value3",

--     ["key4"]: string = "value4",

--     [1]: string = "city1",

--     [2]: string = "city2",

--     [3]: string = "city3"|"city4",

--     [5]: string = "city5",

-- }

--模块

package.path = package.path .. "./" -- 添加当前文件夹

local mymodule = require("mymodule") -- 加载模块

print(mymodule.VERSION) -- 输出模块变量

mymodule.publicFunc() -- 调用模块函数

相关推荐
JiMoKuangXiangQu10 分钟前
Linux 锁 (4) - seqlock
linux·seqlock
xlp666hub27 分钟前
如果操作GPIO可能导致休眠,那么同步机制绝不能采用spinlock
linux·面试
RisunJan1 小时前
Linux命令-mkbootdisk(可建立目前系统的启动盘)
linux·运维·服务器
炽烈小老头1 小时前
【每天学习一点算法 2026/03/22】前 K 个高频元素
学习·算法
神舟之光1 小时前
Java面向对象编程知识补充学习-2026.3.21
java·开发语言·学习
网络工程小王1 小时前
【大数据技术详解】——Kibana(学习笔记)
大数据·笔记·学习
im_AMBER1 小时前
Leetcode 144 位1的个数 | 只出现一次的数字
学习·算法·leetcode
red_redemption2 小时前
自由学习记录(144)
学习
朽棘不雕2 小时前
Linux工具(上)
linux·运维·服务器
BestOrNothing_20152 小时前
Ubuntu 22.04 下调整 VS Code 界面及字体教程
linux·vscode·ubuntu22.04·界面调整