lua本学习笔记功能
Lua本学习笔记功能
1、 函数返回
指定任务的主要功能是完成,在这种情况下,函数被用作调用语句。函数可以计算并返回值,在这种情况下,作为分配值表达式语句使用。
语法:
funcationfunc_name(arguments-list)
Statements-list
end
调用函数的时候,假设參数列表为空,必须使用()表示是函数调用。
Print(8*9,9/8)
a = math.sin(3) +math.cos(10)
print(os.date())
上述规则有一个例外。当函数仅仅有一个參数而且这个參数是字符串或者表构造的时候,()是可选的:
print “hello world” <--> print(“hello world”)
dofile ‘a.lua’ <-->dofile(‘a.lua’)
lua函数实參和形參的匹配与赋值语句类似。多余部分被忽略,缺少部分用nil补足.
2、 返回多个结果值
Lua函数能够返回多个结果值,比方strng.find,其返回匹配串“開始和结束的下标”(假设不存在匹配串返回nil)
s,e = string.find(“hello lua users”,”lua”)
print(s,e) -->7 9
lua函数中,在return后列出要返回的值得到列表就可以返回多值。如:
function maximum(a)
local mi = 1
local m = a[mi]
for i,val inipairs(a) do
ifval >m then
mi = i
m = val
end
return m,mi
end
print(maxmun({8,10,23,12,5})) -->23 3
3、 可变參数
Lua函数能够接受可变数目的參数。和C语言类似在函数參数列表中使用三点(…)表示函数有可变的參数。
Lua将函数的參数放在一个叫arg的表中,除了參数以外,arg表另一个域n表示參数的个数。
4、 命名參数
Lua的函数參数是和位置相关的,调用时实參会依照顺序依次传递给形參。有时候用名字指定參数是非常实用的,比方rename函数用来给一个文件重命名。有时候我们记不起命名前后两个參数的顺序:
rename(old = “temp.lua”,new = “temp1.lua”)
上面的代码是无效,lua能够通过将全部的參数放在一个表中。把表作为函数的唯一參数来实现上面这段伪代码的功能,由于lua语法支持函数调用时实參能够是表的构造。
Rename{old = “temp.lua”,new = “temp1.lua”}
依据这个想法我们重定义了rename:
functionrename(arg)
returnos.rename(arg.old,arg.new)
end
5、 闭包
当一个函数内部嵌套还有一个函数定义时,内部的函数体能够訪问外部的函数的局部变量,这个特种我们称为词法定界。尽管这个看起来非常清楚,事实并不是如此:
假如有一个学生姓名的列表和学生名和成绩对用的表:如今依据学习生的成绩从高到低对学生进行排序。能够这样做:
Names = {“peter”,”paul”,”mary”}
Grades = {mary =10,paul = 7,peter = 8}
Table.sort(Names,function(n1,n2))
ReturnGrades[n1]>Grades[n2]
end)
创建一个函数实现此功能
function sortbygrade (Names,Grades)
table.sort(Names,function(n1,n2))
returnGrades[n1]>Grades[n2]
end)
end
样例中包括在sortbygrade函数内部的sort中的匿名函数能够訪问sortbygrade的參数Grades。在匿名函数内部Grades不是全局变量也不是局部变量,我们称为外部的局部变量。
看例如以下代码:
functionnewCounter()
locali = 0
returnfunction() --匿名函数
i = i+1 --外部的局部变量
return i
end
end
c1 = newCounter()
print(c1()) --> 1
print(c1()) --> 2
匿名函数使用外部的局部变量保存它的计数。当我们调用匿名函数的时候i已经超出了作用范围,由于创建i的函数newCounter已经返回了,然后Lua用闭包的思想正确的处理了这种情况。简单说闭包是一个函数加上它能够正确訪问外部的局部变量。假设我们再次调用newCounter,将创建一个新的局部变量i,因此我们得到一个作用在新的变量i上的新闭包。
技手术称封闭装置值而不是功能,但是,函数原型声明关闭。
版权声明:本文博客原创文章。博客,未经同意,不得转载。
转载于:https://www.cnblogs.com/mengfanrong/p/4710299.html
lua本学习笔记功能相关推荐
- lua基础学习笔记-字符串
lua基础学习笔记-字符串 字符串 Lua 语言中字符串可以使用以下三种方式来表示: 单引号间的一串字符. 双引号间的一串字符. [[ 与 ]] 间的一串字符. 例: string1 = " ...
- Lua 编程学习笔记
文章目录 Lua 编程学习笔记 一.环境安装 二.Lua 基本语法 1. 注释 2. 标识符 3. 变量 4. 数据类型 5. Lua 运算符 三.循环与流程控制 1. 循环 2. 流程控制 四.函数 ...
- steam饥荒mod编写,基础的lua语言学习笔记——第二期
今天我们安装lua语言的环境以及配置环境变量.所使用的代码编辑器则是:Notepad++. 所以我们还需要配置使用此编辑器,运行lua程序. (一)首先我们登陆lua官网:https://www.lu ...
- SAP License:SAP学习笔记
远程培训系统的学习笔记功能 SAP中的会计(帐) 成本中心帐(会计)利润中心帐(会计) 分类帐 明细帐 业务帐 统驭帐 银行会计HR会计客户会计供应商会计资产会计PS会计PM会计 SD会计 MM会计 ...
- 《LUA游戏开发实践指南》学习笔记1
本文只做个人学习笔记! Lua脚本语言的优点:免费.小巧.快速和易移植. 游戏项目中的Lua,可以完成以下工作 编辑游戏用户界面(玩家和你的游戏进行交互的媒介) 定义.存储和管理游戏数据(Lua本人并 ...
- 微信小程序连接物联网(二):NodeMCU Lua学习笔记
索引 这是用微信小程序遥控开门的系列文章,具体微信小程序连接物联网的代码在第三章提及. 微信小程序连接物联网(一):初始化ESP8266 NodeMCU 微信小程序连接物联网(二):NodeMCU L ...
- slua 是c语言开发的吗,初学者必备文档:LUA新手快速学习笔记
LUA程序设计语言 是一个简洁.轻量.可扩展的脚本语言.LUA读作/'lua/(噜啊),是葡萄牙语中"Luna"(月亮)的意思. LUA的目标是成为一个很容易嵌入其它语言中使用的语 ...
- 游戏开发学习笔记——lua脚本语言——安装、汉化与小测试(解决lua运行代码乱码问题)
游戏开发学习笔记--lua脚本语言--安装.汉化与小测试 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: Lua 是一种轻量小巧的脚本语言,用 ...
- Redis学习笔记(八)redis之lua脚本学习
redis系列文章目录 使用spring-data-redis实现incr自增 Redis 利用Hash存储节约内存 Redis学习笔记(九)redis实现时时直播列表缓存,支持分页[热点数据存储] ...
最新文章
- ASP.NET图形化的曲线图类
- c 语言中下标运算符,详解C++中二进制求补运算符与下标运算符的用法
- 转 : 深入解析Java锁机制
- Office 365 Outlook Web App 移动设备体验
- 单调队列优化多重背包
- chatbot2 RNN语言模型
- 人与自然灵长类动物-湿地猎手(上)
- Python print()重定向 不输出到屏幕
- DELL linux 网卡驱动升级
- mysql教材课后题答案_MySql练习题参考答案
- 12 个追地铁的人:照亮生活的一次追逐
- 面试常问的16个C语言问题,你能答上来几个?
- 不管几岁,少女心万岁~女神节快乐!
- mong命令学习记录
- 洛谷p4230 连环病原体 题解
- 人人都要有底层逻辑 - 底层逻辑一定要围绕人
- platform详解
- [乱七八糟]Google搜索使用详细
- BZOJ2178: 圆的面积并(格林公式)
- 苹果6s升级后显示无服务器,iphone6s升级失败变砖的解决方法【图文】
热门文章
- Android开发笔记(一百七十一)使用Glide加载网络图片
- uc点网页显示服务器升级,让uc浏览器网页加载速度提升100%
- 利用VMware Infrastructure SDK编程控制虚拟机集群(2)
- Javascript in one picture
- 集群类型以及提高服务器性能的技术概述
- POJ 3281 (最大流+匹配+拆点)
- 今天在webcasts上看sql server 2008的新功能介绍,无意中发现在连接sql server 数据库时,还有一个...
- 续易crm源码客户资源管理系统crm源码(源代码c#)
- RedHat 9 Linux SendMail 的配置
- 2、根据@FeignClient生成代理类