cocos2dx+连接mysql_Lua编译与运行--php,mysql,java,redis,php redis,ajax,jsp,struts,linux,javascript,html,star...

Lua编译与运行

2015-4-12 孤独求学人 Lua

Lua编译与运行

Lua是解释性语言,但Lua会首先把代码预编译成中间码然后再执行。不要以为需要编译就不是解释型语言,Lua的编译器是语言运行时的一部分,所以,执行编译产生中间码速度会更快。

dofile/dostring和loadfile/loadstring的区别:

(1)do*会编译并执行;load*只编译代码生成中间码并且返回编译后的chunk作为一个函数,但不执行代码。

(2)load*较为灵活,发生错误时load*会返回nil和错误信息(可以打印出来)。

(3)如果要运行一个文件多次,load*只需要编译一次,但可以多次运行,do*每次都需要编译。

(4)dostring(str)等价于loadstring(str)()

Lua把chunk作为匿名函数处理,例如:chunk "a = 1",loadstring返回与其等价的function () a = 1 end

loadfile和loadstring只是编译chunk成为自己内部实现的一个匿名函数,但是这个过程没有定义函数的行为。Lua中的函数定义是发生在运行时的赋值而不是发生在编译时。也就是说loadstring以后,其中的函数还没有被定义,而dostring以后函数就定义好并且可以调用了。

loadstring编译的时候不关心词法范围,也就是说loadstring总是在全局环境中编译他的串,这一点很重要。

local i = 0

f = loadstring("i = i + 1") --使用全局变量i

g = function () i = i + 1 end --使用局部变量i

注意:chunks内部可以定义局部变量也可以返回值:

利用asset获取更多的错误信息是个好习惯。

(转自:)http://www.cnblogs.com/sifenkesi/p/3757282.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值