当前位置: 首页 > news >正文

08、Lua 函数

Lua 函数

  • Lua 函数
    • Lua函数主要有两种用途
    • 函数定义
    • 解析:
      • optional_function_scope
      • function_name
      • argument1, argument2, argument3..., argumentn
      • function_body
      • result_params_comma_separated
  • 范例 : 定义一个函数 max()
  • Lua 中函数可以作为参数传递给函数
  • 多返回值
    • Lua函数中,在 return 后列出要返回的值得列表即可返回多值
  • 可变参数
    • 范例 :计算几个数的平均值

Lua 函数

  • 在Lua中,函数是对语句和表达式进行抽象的主要方法。既可以用来处理一些特殊的工作,也可以用来计算一些值。
  • Lua提供了许多的内建函数,你可以很方便的在程序中调用它们,如print()函数可以将传入的参数打印在控制台上。

Lua函数主要有两种用途

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

函数定义

Lua编程语言函数定义格式如下:

optional_function_scope function function_name( argument1, argument2, argument3..., argumentn)function_bodyreturn result_params_comma_separated
end

解析:

  • optional_function_scope
  • local
  • function_name:
  • argument1, argument2, argument3…, argumentn:
  • function_body:
  • result_params_comma_separated:
  • 实例
  • 以下实例定义了函数 max(),参数为 num1, num2,用于比较两值的大小,并返回最大值:

optional_function_scope

该参数是可选的用于函数是全局函数还是局部函数,未设置该参数默认为全局函数,如果你需要设置函数为局部函数需要使用关键字 local

function_name

指定函数名称

argument1, argument2, argument3…, argumentn

函数参数,多个参数以逗号隔开,函数也可以不带参数

function_body

函数体,函数中需要执行的代码语句块

result_params_comma_separated

函数返回值,Lua语言函数可以返回多个值,每个值以逗号隔开

范例 : 定义一个函数 max()

下面范例定义了一个函数 max(),参数为 num1, num2,用于比较两值的大小,并返回最大值

-- !/usr/bin/lua
-- -*- encoding:utf-8 -*-
-- filename: main.lua
-- Copyright © 2015-2065 www.twle.cn. All rights reserved.--[[ 函数返回两个值的最大值 --]]
function max(num1, num2)if (num1 > num2) thenresult = num1;elseresult = num2;endreturn result; 
end-- 调用函数print("两值比较最大值为 ",max(10,4))
print("两值比较最大值为 ",max(5,6))

运行以上 Lua 脚本,输出结果如下:

$ lua main.lua
两值比较最大值为  10
两值比较最大值为  6

Lua 中函数可以作为参数传递给函数

-- !/usr/bin/lua
-- -*- encoding:utf-8 -*-
-- filename: main.lua
-- Copyright © 2015-2065 www.twle.cn. All rights reserved.myprint = function(param)print("这是打印函数 -   ##",param,"##")
endfunction add(num1,num2,functionPrint)result = num1 + num2-- 调用传递的函数参数functionPrint(result)
end
myprint(13)-- myprint 函数作为参数传递
add(3,7,myprint)

运行以上 Lua 脚本,输出结果如下

$ lua main.lua
这是打印函数 -   ## 13  ##
这是打印函数 -   ## 10  ##

多返回值

Lua 中的函数可以返回多个结果值,例如 string.find 返回匹配串 “开始和结束的下标”(如果不存在匹配串返回 nil )

s, e = string.find("www.twle.cn", "twle") 
print(s, e) 
5 10   --输出结果

Lua函数中,在 return 后列出要返回的值得列表即可返回多值

-- !/usr/bin/lua-- -- encoding:utf-8 -- -- filename: main.lua -- Copyright © 2015-2065 www.twle.cn. All rights reserved.function multiple_values()local a = 1local b = 2local c = 3return a, b, c
endlocal x, y, z = multiple_values()
print(x, y, z)  -- 输出:1 2 3

运行以上 Lua 脚本,输出结果如下

$ lua main.lua
1 2 3

可变参数

Lua 中的函数可以接受可变数目的参数。
和 C 语言 类似,Lua 在函数参数列表中使用三点 (…) 表示函数有可变的参数
Lua 将函数的参数放在一个叫 arg 的 table 中, #arg 表示传入参数的个数

范例 :计算几个数的平均值

-- !/usr/bin/lua
-- -*- encoding:utf-8 -*-
-- filename: main.lua
-- Copyright © 2015-2065 www.twle.cn. All rights reserved.function average(...)result = 0local arg={...}for i,v in ipairs(arg) doresult = result + vendprint("总共传入 " .. #arg .. " 个数")return result/#arg
endprint("平均值为",average(1,3,5,7,9,11))

运行以上 Lua 脚本,输出结果如下

$ lua main.lua 总共传入 6 个数 平均值为 6.0
http://www.lryc.cn/news/329678.html

相关文章:

  • 【数据分析面试】1. 计算年度收入百分比(SQL)
  • 数据库SQL语句速查手册
  • 智慧城市一屏统览,数字孪生综合治理
  • Python读取PDF文字转txt,解决分栏识别问题,能读两栏
  • 微信支付平台与微信服务号关联配置要点
  • C++类复习
  • Spring使用(一)注解
  • Linux基本指令篇
  • CSS实现小车旅行动画实现
  • 6_相机坐标系_相机4个坐标系详述
  • 软考 - 系统架构设计师 - 敏捷开发方法
  • Django 仿博客园练习
  • MySQL(常用函数、多表查询)
  • 【Pt】马灯贴图绘制过程 01-制作基础色
  • TransmittableThreadLocal 问题杂记
  • Linux之 线程池 | 单例模式的线程安全问题 | 其他锁
  • Composer常见错误及解决方案
  • 系统架构图怎么画
  • 微信小程序页面生命周期和小程序api组件的生命周期
  • 通过node 后端实现颜色窃贼 (取出某个图片的主体rgb颜色 )
  • 【蓝桥杯第十三届省赛B组】(详解)
  • 网址打包微信小程序源码 wap转微信小程序 网站转小程序源码 网址转小程序开发
  • C# OpenCvSharp 轮廓检测
  • 阿里云服务器安装SSL证书不起作用的解决方案
  • 【二】【设计模式】建造者模式
  • Linux 系统 CentOS7 上搭建 Hadoop HDFS集群详细步骤
  • 【Python】python+requests+excel+pytest-实现接口自动化实例
  • Django(四)-搭建第一个应用(3)
  • 吴恩达2022机器学习专项课程(一) 4.2 梯度下降实践
  • SQL,group by分组后分别计算组内不同值的数量