1: local AdBar = import(
"..views.AdBar”
)
import require 功能一样, 只不过require要使用绝对路径
2:
local function 与局部变量等效的作用域
3:
lua 优点:
4: 弱类型的语言的东西没有明显的类型,他能随着环境的不同,自动变换类型 而强类型则没这样的规定,不同类型间的操作有严格定(C#就是一个强类型语言)
弱类型语言vbs: a=1 b=a+"1"+"a" //结果是11a,这里 a 成了字符串 c=a+1 //结果是2 ,这里a则是数字型5: 想这种不是类如何调用函数: 等价于 action["delay"] = func匿名函数action = {} — 不是个类,是个表/模块 function action.delay( time, func ) local node = cc.Node:create() 。。。6: : 。不管函数声明用神魔:只用记住sp:setVisible(false) — 冒号默认隐藏第一个参数,化为.是, 把调用者加上 sp.setVisible(sp,false)之间的转化,时等效的。 是sp 不是self—sp.setVisible(self,false)例子:1function tab.func(a,b,c,d ) -- body print(value) end function tab:func2( value )print(self) --1 end
- a = { x = 1 }
- function a.fun(self)
- print(self.x)
- end
- a.fun(a)--输出1,将a自己做为参数传给fun函数的self
--------------------------------------------官方教程------------------------------------------------------
一、基础的main.lua、config.lua 和MyApp.lua
1 : 先打开src下的main.lua
-- 启动后执行MyApp脚本, 并执行当中的 run() 方法
require(
"app.MyApp"
).
new
():run()
每个新建的工程的main.lua都一样,不需要改动,我们只要知道它是程序lua脚本的启动文件就够了。接着我们沿着最后一句代码 require("app.MyApp").new():run() ,打开MyApp.lua, 观察当中的run()方法
2:ctor() 相当于构造函数 或者说 是Cococs2d-x里的init(),一旦new,就会调用ctor() ,
3:
在Quick中使用图片,如果使用的图片是以#开头的话表示是从SpriteFrameCache中读取,如果没有使用#开头的话表示是直接从文件读取。(还记得在MyApp.lua中我们已经加载了图片缓存了吗?)
----------------------------------------------------------------------------------------------------
1 : 2者只是结构上等价, 功能不等价。 不能用.new()函数
display.newSprite
,类似的接口还有display.newLayer
。基本的格式都是display.newXXX
,"XXX"包括sprite、layer、node、scene等,详细的可以查看display文
一.tolua++简介
tolua++是一种第三方的软件包,可以为Lua提供面向对象的特性,这样我们就可以使用Lua来编写使用C++语言库的脚本文件.
1. 这两种写法是没差别的
lua中的函数可以被存放在变量、表中,也可以作为函数的参数,还可以作为函数的返回值,如:
func = function()
print("Hello");
end
等价于
function func()
print("Hello"); end
这两种写法都是函数func()的定义;
COMAND +SHIFT + Z 前进
2:区别 : 一个遍历数组部分, 一个遍历所有
for i,v in ipairs(fnsß) do
print(i,v)
end
for k,v in pairs(table_name) do
print(k,v)
end
3:A 函数的局部变量是可以保存在函数内部的,通过调用该函数内嵌的函数可以获取并修改局部变量的值,该函数的局部变量(upvalue)和内嵌函数的组合使用,形成了闭包,这看起来与C++中类的成员变量有些类似。函数具有闭包的功能后,不必再担心其局部变量没办法保存了,这一点对程序员的影响是很大的。
B: function func()
return function() print("Hello"); end --函数作为返回值 直接return不能加函数函数名字 syntax
end — return 函数名字也可以
不对改为:
function add( )
function show( ) print("...hello”) end — 这时候加函数名字 不能匿名了
return show
end
add(); 调用后只是返回一个函数指针变量 会输出”heelo”吗?
C:
function add( )
local a = 1
local function show( ) a = a+1 print(a) end
show() — return show add()(); 完全不同了
end
add(); — 只调用了add函数,没有调用show()函数 2
D:
function add( )
local a = 1 — 此时作用域 chunk
local function show( … ) end
end
4: 闭包函数: 函数作为返回值 优点:
function func()
return function() print("Hello"); end --函数作为返回值
end
local f1 = func();
print(f1); --运行结果:function:00379738
f1(); --运行结果:Hello
是函数作为函数返回值的情况,其中f1是func()内部返回的函数,打印出来为函数在内存中的地址,f1()调用了内部函数,执行后打印出了"Hello"结果。