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() -- 调用模块函数

相关推荐
墨黎芜20 小时前
SQL Server从入门到精通——C#与数据库
数据库·学习·信息可视化
Doro再努力21 小时前
【Linux操作系统06】深入理解权限掩码与粘滞位
linux·运维·服务器
wdfk_prog21 小时前
[Linux]学习笔记系列 -- [drivers][dma]stm32-dma
linux·笔记·学习
暖阳之下21 小时前
学习周报三十三
学习
mzhan01721 小时前
[Linux] vdso 32bit vs 64bit
linux·运维·服务器
写点什么呢21 小时前
Ltspice_安装与使用
学习·测试工具
旖旎夜光21 小时前
Linux(13)(上)
linux·网络
忧郁的橙子.21 小时前
26期_01_Pyhton linux基本命令
linux·运维·服务器
CappuccinoRose21 小时前
CSS前端布局总指南
前端·css·学习·布局·flex布局·grid布局·float布局
郝学胜-神的一滴21 小时前
深入解析Linux网络编程之bind函数:从基础到实践的艺术
linux·服务器·网络·c++·websocket·程序人生