cocos2d-Lua之局部变量与全局变量
来源:互联网 发布:无线网网络受限怎么办 编辑:程序博客网 时间:2024/06/03 22:35
lua作为一门脚本语言,变量的声明不需要加变量类型,比如:
a = 5 //默认就是整型a = 5.5 //默认就是浮点类型a = "hello" //默认就是字符串类型
当然lua脚本语言跟其他编程语言一样也是有全局变量和局部变量的,像前面变量a那样声明默认就是全局变量
local LuaLessionOne = class(“LuaLessionOne”, function()
return display.newScene(“LuaLessionOne”)
end)
a = 58.5 //1
function LuaLessionOne:ctor() print(a) //2 cc.ui.UILabel.new({ UILabelType = 2, text = "LuaLessionOne", size = 64}) :align(display.CENTER, display.cx, display.cy) :addTo(self)endreturn LuaLessionOne
其他地方不用看,就只看做数字标记的地方,此时a就是一个全局的浮点型变量,输出结果是这样的:
可以看到输出了一个58.5的浮点型。
再加个函数:
a = 5 //默认就是整型a = 5.5 //默认就是浮点类型a = "hello" //默认就是字符串类型a //默认a无效,值为nil
当然lua脚本语言跟其他编程语言一样也是有全局变量和局部变量的,像前面变量a那样声明默认就是全局变量
local LuaLessionOne = class("LuaLessionOne", function() return display.newScene("LuaLessionOne")end)a = 58.5 //1function LuaLessionOne:ctor() fun() print(a) //2 cc.ui.UILabel.new({ UILabelType = 2, text = "LuaLessionOne", size = 64}) :align(display.CENTER, display.cx, display.cy) :addTo(self)endfunction fun() a = "hello, world"endreturn LuaLessionOne
输出结果:
可以看到这里输出了“hello,world”的字符串,在以往C/C++,Java这类语言中函数中的变量默认都是局部变量,而在lua脚本语言中,即使函数内部的变量默认仍然是全局变量,这就是脚本语言的强大啊(并且fun()函数的声明是在使用之后,同样也是可以使用的,就是涉及到函数的全局性问题了,后面再说,当然,如果把fun()的调用放在print(a)之后,定然就打不出来“hello,world”了,毕竟打印在前,fun在后,不然这就不是强大的问题了,语句的先后顺序都不管了,那这门语言估计也没人能看懂了)
如果想把变量声明为局部变量就在变量前加local关键字,把上面的代码继续修改:
local LuaLessionOne = class("LuaLessionOne", function() return display.newScene("LuaLessionOne")end)a = 58.5 //1function LuaLessionOne:ctor() fun() print(a) //2 cc.ui.UILabel.new({ UILabelType = 2, text = "LuaLessionOne", size = 64}) :align(display.CENTER, display.cx, display.cy) :addTo(self)endfunction fun() local a = "hello, world"endreturn LuaLessionOne
现在的输出结果就跟第一次一样了,现在fun中的a变成了函数中的局部变量:
那如果把a = 58.5前加个local会是个什么效果呢,那a就只能在当前文件(假设这个文件名加test.lua)中使用,换了其他文件就无效了。那么再加一个another.lua文件
--another.lua文件a = "aa.lua中的变量a"
--test.lua文件require("app.scenes.another") //导入another.lua文件local LuaLessionOne = class("LuaLessionOne", function() return display.newScene("LuaLessionOne")end)--a = 58.5function LuaLessionOne:ctor() fun() print(a) cc.ui.UILabel.new({ UILabelType = 2, text = "LuaLessionOne", size = 64}) :align(display.CENTER, display.cx, display.cy) :addTo(self)endfunction fun() local a = "hello, world"endreturn LuaLessionOne
可以看到此时another.lua文件中的变量a是全局变量,导入到test.lua中仍然可用,因此输出结果是这样的:
那现在把another.lua中的变量a声明为local局部变量,test.lua中保持不变,再运行一下:
--another.lua文件local a = "aa.lua中的变量a"
此时another.lua中的变量a为local局部变量。即使被导入到了test.lua文件中,但在test.lua中无效,因此输出结果为:
可以看到此时a是nil,因为在test.lua中的print(a)前并没有a变量的声明,another.lua中的a在test.lua中无效。
- cocos2d-Lua之局部变量与全局变量
- lua中的全局变量与局部变量
- lua中的全局变量与局部变量与块
- python学习之全局变量与局部变量
- 全局变量与局部变量
- 局部变量与全局变量
- 全局变量与局部变量
- 全局变量与局部变量
- 全局变量与局部变量
- 全局变量与局部变量
- 全局变量与局部变量
- 全局变量与局部变量
- 全局变量与局部变量
- 全局变量与局部变量
- 局部变量与全局变量
- 局部变量与全局变量
- 全局变量与局部变量
- 全局变量与局部变量
- Java常用编码规范
- scrollview + listview 只显示一行的解决办法
- 图像处理珍藏版本汇总
- 跨域问题
- EOFException in RealBufferedSource.readUtf8LineStrict解决方案
- cocos2d-Lua之局部变量与全局变量
- 关于eLTE,你不知道的事
- NDK r9d版本下载
- Java中QQ号的校验案例
- CRM开发总结2:BOL找字段层级关系
- Android Https 双向认证
- 0601 c语言概述
- ListView与ScrollView冲突的4种解决方案
- Java中正则表达式的分割案例