Lua学习笔记——进阶
来源:互联网 发布:tomcat修改端口号 编辑:程序博客网 时间:2024/05/24 04:48
Lua进阶关于变量的作用域:多个Lua文件中变量默认是可以共用的(变量前面默认有 _G. 表示全局 )Lua脚本中的变量是申请在Lua解析器中的,多个Lua脚本的全局变量申请空间都是在Lua解析器中local 关键字 加在变量申请之前 表示变量只在变量所在的代码块中可以访问代码块:包裹在有end关键字结尾的代码内部的区间注意:在代码块内部如果不加local 变量仍然是全局的。001. dofile() 函数在test2.lua中调用test1.lua dofile(test1.lua) //游戏中砍一刀,就调用一次dofile;不用停下来全部文件更新 (不会改变的逻辑代码用C来写,经常需要更新的用Lua脚本语言来写)002. require("test1") 与dofile类似,区别是:require相当于加载,多次加载只有第一次会执行,类似有防止头文件重复包含;dofile相当于执行一次Lua脚本,多次调用都会生效003 闭包,函数类型变量的定义function func1()local function func2() //闭包作用:定义类似private类型的变量,函数类比C++的类print("func2 is called")endfunc2()endfunc1()func2() //如果func2 前面不加local ,外部调用过func1之后,就可以调用func2了004 Lua中的类 利用setmetatable实现animal = {}animal.foot_count = 4dog = {}duck = {}setmetatable(dog,{__index = animal}) 相当于指定dog是animal的子类, __index是一个metatable中的变量 还有一个 __newindex可以用来改变父类的值。setmetatable(duck,{__index = animal})//当对duck 的 foot_count 进行赋值的时候,因为duck本身并没有这个foot_count 所以会在animal中寻找这个foot_count变量duck.foot_count =2此时dog.foot_count = 4duck.foot_count =2005利用setmetatable实现俩table相加point = {}point.x = 1point.y = 2point1={}point.x = 100point.y = 200mt = {__add = function(a,b) local t ={};t.x = a.x+b.x;t.y = a.y+b.y; return t ;end}setmetatable(point ,mt) //为point添加+属性point2 = point + point2 //类似C++的操作符重载,但是不同的是Lua不需要将+运算放到第一个操作数的成员函数中,而是任何一个操作数只要有一个有+运算就可以006 setmetatable还有__eq __le等固定的元方法 可用于重载setmetatable(point ,{__add =addfunc,__eq = isEqual}) //配合外部定义的addfunc isEqual函数完成重载运算
0 0
- Lua学习笔记——进阶
- lua学习笔记—table
- Lua学习进阶一
- Lua学习笔记七——lua也面向对象
- Lua学习笔记五——metatable
- Lua学习笔记六——package
- Lua学习笔记六——package
- Lua学习笔记六——package
- Lua学习笔记——基础篇
- Lua学习笔记六——package
- lua学习笔记——coroutine
- cocos2d-lua 学习笔记—1
- lua学习笔记之二(C/C++程序员的Lua快速入门[进阶话题])
- lua学习笔记三——iterator and closure
- Lua学习笔记四——协同程序coroutine
- Lua学习笔记(一) —— 数据类型
- Lua学习笔记(二)—— 函数
- Lua学习笔记(三)——协同程序
- Day 12 绝对路径相对路径
- Power of Cryptography POJ - 2109
- python技巧(12)
- Lua学习笔记——基础篇
- HashMap在非线程安全下的死循环
- Lua学习笔记——进阶
- Hdu-5921 Binary Indexed Tree(数位DP)
- Lua学习笔记——C语言与Lua的交互
- 这是开始
- ToolBar报错:AppCompat does not support the current theme features
- 使用Java语言,使用System.in输入以下各个变量的值,并按照公式计算得出结果。 公式为: 4/3*(r+34)-9*(a+b*c)+(3+d*(2+a))/(a+b*d)
- Leetcode 78. Subsets
- poj3461 Oulipo
- 编写程序接收一个ASCII码(从0至128),然后显示输入ASCII码所代表的字符。 注意: (1)能够对1个或多个输入的ASCII码进行处理; (2)对于输入的非ASCII码进行判定和排除。