五、Lua流程控制与函数

一、流程控制

(一)含义

Lua 编程语言流程控制语句通过程序设定一个或多个条件语句来设定。在条件为 true 时执行指定程序代码,在条件为 false 时执行其他指定代码。

(二)原型

cpp 复制代码
if (成立) then
	执行体1
	else
	执行体2
end

(三)举例

cpp 复制代码
a = 1;
if (a == 1) then
    a = a + 1;
else
    a = a + 2;
end
print(a);

二、函数

(一)函数定义

在Lua中,函数是对语句和表达式进行抽象的主要方法。既可以用来处理一些特殊的工作,也可以用来计算一些值。

Lua 提供了许多的内建函数,你可以很方便的在程序中调用它们,如print()函数可以将传入的参数打印在控制台上。

Lua 函数主要有两种用途:

  • 完成指定的任务,这种情况下函数作为调用语句使用;
  • 计算并返回值,这种情况下函数作为赋值语句的表达式使用。

1.范围

默认local

2.格式

cpp 复制代码
optional_function_scope function function_name( argument1, argument2, argument3..., argumentn)
    function_body
    return result_params_comma_separated
end
cpp 复制代码
function 函数名(参数列表)
	函数体;
	return 返回值
end
cpp 复制代码
function max(arg1,arg2)
    local result  = arg1;
    if (arg1 < arg2) then;
        result = arg2;
    end;
    return result;
end;
print(max(1,2));

(二)多返回值函数

cpp 复制代码
function findMax(arr)
    local index = 1;
    local value = arr[index];
    for k,v in pairs(arr)
        do
            if (v > value) then
                index = k;
                value = v;
            end
        end
    return index,value;
end

index,value = findMax({1,3,5,7,9});

print("最大值索引:"..index.."最大值:"..value);

(三)可变参数

1.可变参数:arg = {...}

cpp 复制代码
function sum(...)
    local arg = {...};
    local result = 0;
    for k,v in pairs(arg)
    do
        result = result + v;
    end
    return result;
end

2.获取可变参数的个数: #arg

cpp 复制代码
function avg(...) 
    local arg = {...};
    local result = 0;
    local count = #arg;
    for k,v in pairs(arg)
    do
        result = result + v;
    end
    return result/count;
end
    print("avg ="..avg(1,2,3,4,5,6));

3.函数参数列表中,存在固定参数和可变参数,固定参数全部写在前面

cpp 复制代码
 
function fmtPrint(fmt,...)
    io.write(string.format(fmt,...))
end
 
fmtPrint("%s\n","helloworld")
fmtPrint("%d + %d = %d\n",1,1,2)

4.选取可变参数的值:select

cpp 复制代码
function ff4(...)
    a,b,c = select(3,...)
    return a,b,c;
end
 
print(ff4(1,2,3,4,5,6,7,8,9));
相关推荐
微风中的麦穗4 小时前
【MATLAB】MATLAB R2025a 详细下载安装图文指南:下一代科学计算与工程仿真平台
开发语言·matlab·开发工具·工程仿真·matlab r2025a·matlab r2025·科学计算与工程仿真
2601_949146534 小时前
C语言语音通知API示例代码:基于标准C的语音接口开发与底层调用实践
c语言·开发语言
开源技术4 小时前
Python Pillow 优化,打开和保存速度最快提高14倍
开发语言·python·pillow
学嵌入式的小杨同学5 小时前
从零打造 Linux 终端 MP3 播放器!用 C 语言实现音乐自由
linux·c语言·开发语言·前端·vscode·ci/cd·vim
mftang6 小时前
Python 字符串拼接成字节详解
开发语言·python
jasligea6 小时前
构建个人智能助手
开发语言·python·自然语言处理
kokunka6 小时前
【源码+注释】纯C++小游戏开发之射击小球游戏
开发语言·c++·游戏
云栖梦泽7 小时前
易语言开发从入门到精通:补充篇·网络编程进阶+实用爬虫开发·API集成·代理IP配置·异步请求·防封禁优化
开发语言
java1234_小锋7 小时前
Java高频面试题:SpringBoot为什么要禁止循环依赖?
java·开发语言·面试
铅笔侠_小龙虾8 小时前
Flutter Demo
开发语言·javascript·flutter