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

相关推荐
ZH1545589131几秒前
Flutter for OpenHarmony Python学习助手实战:API接口开发的实现
python·学习·flutter
爱吃生蚝的于勒4 分钟前
【Linux】进程信号之捕捉(三)
linux·运维·服务器·c语言·数据结构·c++·学习
奶茶精Gaaa11 分钟前
工具分享--F12使用技巧
学习
The森16 分钟前
Linux IO 模型纵深解析 01:从 Unix 传统到 Linux 内核的 IO 第一性原理
linux·服务器·c语言·经验分享·笔记·unix
翼龙云_cloud33 分钟前
腾讯云代理商: Linux 云服务器搭建 FTP 服务指南
linux·服务器·腾讯云
纤纡.35 分钟前
Linux中SQL 从基础到进阶:五大分类详解与表结构操作(ALTER/DROP)全攻略
linux·数据库·sql
久邦科技39 分钟前
奈飞工厂中文官网入口,影视在线观看|打不开|电脑版下载
学习
好好学习天天向上~~1 小时前
6_Linux学习总结_自动化构建
linux·学习·自动化
冉佳驹1 小时前
Linux ——— 静态库和动态库的设计与使用
linux·动态库·静态库·fpic
陌上花开缓缓归以1 小时前
linux mtd-utils使用源码分析(ubuntu测试版)
linux·arm开发·ubuntu