L1[闭包]01. 函数的传递赋值

没什么说的

1.函数作为变量来看 可以轻松的声明 相互赋值

2.函数变量本质是 一个内存指针 所以函数变量的相互赋值不是传递的函数本身 而是指向这个函数的内存地址

L1[闭包]02. 修改print函数功能

小知识:函数变量相互赋值的一个容易混淆的问题 函数后面的括号问题

function test()print("执行了test函数")
end
aa=test--不加括号只是函数变量之间的赋值
bb=test()--加了括号表示要执行这个函数  --结果:执行了test函数

L1[闭包]03. table与function

小知识了解下而已 表内元素是一个函数的推荐写法  其实只要你自己能分清楚就好 怎么写都是可以的

写法一:在普通表上的某个指定元素直接写对应函数的内容 个人习惯如此能尽量避免出现问题和意外

--1 把其他元素都写满 比如key是c的要对应一个函数 其他元素都写上
tempTable={a=1,b="sd",c=1,d=213,e=32}
--2 每个元素分层 要写函数的元素对应的内容先写上function ()  end
tempTable={a=1,b="sd",c=function ()end,d=213,e=32
}
--3 写完表的指定元素对应的函数内容 完毕
tempTable={a=1,b="sd",c=function ()return "c"end,d=213,e=32
}

方法二:先声明下表 然后用表元素构建函数即可(推荐

tempTable={a=1,b="sd",d=213,e=32}
tempTable.c=function()return "c"
end

123

L1[闭包]04. 定义与调用的顺序

无话可说 看标题就明白 鉴于平时习惯就是把常用函数写到一个独立文件然后用dofile在代码开头调用 或者把函数都写到模块文件 然后在当前代码require开头调用 基本不会出现这个问题 罢了

L1[闭包]05. table自定义排序

小知识:table.sort函数的理解 主要是第二个参数的理解

如果第二个参数是函数 那么这个函数默认是2个参数a,b 分别对应第一个参数表里面的从头开始的2个元素 比如第一次取1 2位 第二次取2 3位依次如此 取到表的元素内容后 进入这个第二个参数对应的函数里面进行某种运算 返回true 则表示无需交换参数1表里面的这2个元素的位置  返回false自然是要交换位置  具体什么情况返回true 什么返回false 看函数内自己定义

aa={10,2,31,14,5,2,234,123}function test(a,b)return a>b--这表示从高到低  反过来你懂的
endtable.sort(aa,test)
for v,k in pairs(aa) doprint(k)
end

结果:

234
123
31
14
10
5
2
2

L1[闭包]06. 闭包函数

其实闭包的概念我们之前已经看到很多资料了 这里简单的提提

1.闭包的基本结构

function test()local n=0--外部局部变量 可以理解成C语言下的静态变量    return function ()n=n+1return nend
endf=test()--注意test函数的返回内容是一个函数 而且是一个尚未执行的函数  想要获取这个返回函数的结果 还需要在执行一次才可以
print(f())--1
print(f())--2
print(f())--3

2 闭包的常见用途 实现面向对象编程的静态变量概念

3 闭包的几个注意事项

(1.注意返回的是一个函数 但是只是返回函数 并不是执行函数

(2c语言的静态变量的=外部局部变量  基本特性是

  1. 对于局部变量作用域依旧没有改变,只有定义该局部变量的函数和复合语句可以引用,但是其生命周期变成了直到整个源程序文件结束
  2. 对于全局变量生命周期没有发生变化,但是其作用域反而有所减小,只有本文件的函数可以引用该全局变量。

3.是某函数中的局部变量,那么这个变量只被初始化赋值一次,
当这个函数被多次调用时,除第一次被调用时 m 的内容被初始化外,
以后每次调用时,m 都会在上一次函数被调用时产生结果的基础上继续运行的。

123

转载于:https://www.cnblogs.com/zjl8455482/p/11273278.html

[lua]紫猫lua教程-命令宝典-L1-03-01. 闭包相关推荐

  1. arch linux 2014 安装教程,Arch Linux 2014.03.01 硬盘安装 Win + Grub4dos + Arch

    Arch Linux 安装有很多方法,但是,Grub4dos 下安装可以具有更多的灵活性,且可以随时调整. 好了,步入正题吧. 第一步,准备 1.首先,还是GRUB4DOS,这个资料Linux公社很多 ...

  2. lua脚本之lua语言简介以及lua的安装

    本博主不擅于进行文字创作,所以,相当一部分文字皆复制于其他博文.还希望能够得到谅解.  一.Lua语言简介 Lua是一个免费的开源软件,可以免费用于科研及商业.Lua具有一个专家团队在维护和升级,其设 ...

  3. Lua之Lua安装与Lua变量-TTLSA(一)

    为什么80%的码农都做不了架构师?>>>    公司业务有用到Lua,与nginx结合起来实现高性能的web应用,想去弄懂这方面的知识,就去了解学习了下Lua,欢迎大咔们指教. 1. ...

  4. Lua:01---Lua语言介绍、运行Lua程序(lua解释器)

    一.Lua语言介绍 Lua语言从一开始就被设计为能与C/C++及其他常用语言开发的软件集成在一起使用的语言,这种设计带来了非常多的好处: 一方面, Lua语言不需要在性能.与三方软件交互等C语言已经非 ...

  5. Ubuntu9.04配置命令宝典

    Ubuntu9.04配置命令宝典 内容目录 一.系统初始 1.因特网设置 1)连网 2)软件源设置的网站 3)测试您连接软件源的速度 4)设置软件源 2.从旧系统升级到新的系统 3.安装 Ubuntu ...

  6. lua—C/C++lua嵌入式开发

    lua-C/C++lua嵌入式开发 一.lua定位--C/C++嵌入式脚本语言 二.数据类型--table 三.协程 下面重点说一下Lua与C/C++之间的交互 [一]基本配置 [二]进行交互 [三] ...

  7. 【Lua基础】Lua入门24式

    例1 第一个程序 --经典hello程序 1 print("hello") --输出 hello 例2 注释 --单行注释使用"--"即可 --[[多行注释以& ...

  8. [Lua语言编程]Lua语言基础知识

    文章目录 `Lua` `Lua`语言的起源 `Lua` 特性 `Lua下载` Linux 系统上安装 Mac OS X 系统上安装 Window 系统上安装 `Lua` `Lua`语言语法 `Lua` ...

  9. C++配置lua并读写lua文件

    描述 如何使用C++配置lua库,并读写lua文件 配置lua 进入lua官方网站http://www.lua.org 点击"Download",下载最新版本的lua库 下载后的文 ...

  10. Lua基本语法-lua与C#的交互(相当简单详细的例子)

    lua脚本 与 C#的交互 本文提供全流程,中文翻译. Chinar坚持将简单的生活方式,带给世人! (拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 Lua And C# - ...

最新文章

  1. 设置cookie存活时间_Django之cookie、session、token
  2. 梅赛德斯奔驰即将为Apple Watch推出应用
  3. 04springMVC结构,mvc模式,spring-mvc流程,spring-mvc的第一个例子,三种handlerMapping,几种控制器,springmvc基于注解的开发,文件上传,拦截器,s
  4. Linux打tar包排除目录中的某个目录
  5. [BZOJ3203][SDOI2013]保护出题人(凸包+三分)
  6. react月份选择控件_看我的案例:用react写一个日历控件!
  7. 本地算术验证码识别教程
  8. 使用FragmentTabHost+Fragment+viewpager 实现滑动分页
  9. visio从mysql导入_Visio 怎么从Excel、SQL、SharePoint和其他外部源导入数据?
  10. 掌握这几个 Java 性能调优技巧,95%的面试必问的Java性能调优知识点,
  11. 基于89C51单片机的智能语音拨号电话
  12. 24V单节锂电池充电芯片
  13. 超声光学成像突破衍射极限
  14. 夏季繁华系列||妆面照欣赏
  15. sql注入漏洞,应屏蔽SQL注入攻击
  16. mysql入门很简单系列视频-学习笔记
  17. Qt tableview
  18. Main.obj : error LNK2019: 无法解析的外部符号 _Direct3DCreate9@4,该符号在函数 long __cdecl InitD3D(struct HWND__ *)
  19. mysql 数据精确度,MySQL中数值类型的精度探析
  20. 【升级为阿里云云效Codeup】

热门文章

  1. c语言求余的方法,c语言求余的实现方法_后端开发
  2. android qq 文件怎么恢复,恢复QQ接收文件的文件夹被误删除了的方法
  3. java杯子换水_水壶问题(向水壶中倒z升水) Water and Jug Problem
  4. 衡量测试的充分性和完整性-测试覆盖率
  5. 选择排序为什么是不稳定的?
  6. 百度文库等禁止页面弹出(禁用javascript)
  7. 81章 老子1章到_老子81章
  8. aspose利用word模板生成word、PDF
  9. LSP原则—关于正方形不是长方形
  10. android打开xlsx文件,如何在Android中打开.xlsx文件?