• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >Lua > Lua的编译、执行和调试技术介绍

Lua的编译、执行和调试技术介绍

作者:junjie 字体:[增加 减小] 来源:互联网

junjie 通过本文主要向大家介绍了lua编译器,lua在线编译,lua编译器下载,lua源码编译,lua反编译等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

dofile读入文件编译并执行,真正完成功能的函数是loadfile;与dofile不同,loadfile仅仅是编译代码成中间码,并且把编译后的chunk作为函数返回。如果发生错误,返回nil和错误信息。我们可以这么定义dofile:
function dofile(filename)
     local f = assert(loadfile(filename))
     return f()
end
</div>

如果你只调用一次,可以使用dofile(filename),如果是调用多次,可以f = loadfile(filename); f();f()...

loadstring与loadfile相似,只不过他是从一个串中读入。

lua中函数定义发生在运行时而不是编译时。
f = loadstring("i=i+1")
与f = function() i = i+1 end等价。但loadstring不关心词法范围:
i = 33
local i = 0;
f = loadstring("i=i+1")
g = function() i = i+1 end
</div>
g使用的是局部变量i,而f使用的是全局变量i,因为f总是在全局环境下编译。

犯错是人的本性,因此我们必须以最佳的方式来处理错误。lua作为扩展语言,经常嵌入到其他应用,当错误发生时,不能简单的crash或exit。
print "enter a number:"
n = io.read("*number")
if not n then error("invalid input") end
</div>
if not condition then error end 的组合太普遍了以至于lua专门内建了一个函数来做这工作,这个函数就是assert。

通常,当异常发生时,你有两个方式处理,要么返回错误码(nil),要么报错(error)。对于这两种方式,并没有固定的准则来做选择。但是我们提供通用的原则:容易避免的异常应该报错,否则返回异常。举例说明:

math.sin接受个number型的弧度值,如果参数不是number,我们应该报错,而不是返回错误码。假设我们是返回错误码,那么我们使用就得这样:
local res = math.sin(x)
if not res then
     <error handling>
</div>
其实,我们可以很容易地检测这个异常,在调用sin之前:
if not tonumber(x) then
     <error handling>
</div>
通常,我们是既不检测sin的参数,也不检测sin的返回值。如果参数不是number,往往是我们代码自身出问题了。这种情况下,停止执行并报错是最简单也是最实用的方式。

相反的,io.open这个函数,就不存在简单的在调用open之前就检测出异常的方法。打开失败可能是因为文件不存在,或权限不够。通过返回错误码,你可以采用适当的方式来处理,比如让用户输入另一个文件名。

</div>

您可能想查找下面的文章:

  • Lua的编译、执行和调试技术介绍

相关文章

  • Lua中的__index方法详解
  • Lua中的闭合函数、非全局函数与函数的尾调用详解
  • Lua判断字符串中包含中文字符的方法和计算字符串宽度函数分享
  • Lua中table的几种构造方式详解
  • Lua判断Table是否为空的方法(空的table即{})
  • Lua中创建全局变量的小技巧(禁止未预期的全局变量)
  • lua脚本语言快速入门教程
  • Lua中遍历文件操作代码实例
  • Redis教程(三):List数据类型
  • Lua内置的调试器用法详解

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Lua中实现面向对象的一种漂亮解决方案
    • Lua中遍历数组和table的4种方法
    • 浅析C\C++和Lua的通信方式
    • Lua协程(coroutine)程序运行分析
    • Lua脚本调用外部脚本
    • Lua中执行系统命令方法介绍
    • Lua table的concat方法使用实例
    • Lua性能优化技巧(五):削减、重用和回收
    • Lua中的异常处理pcall、xpcall、debug使用实例
    • Lua判断字符串中包含中文字符的方法和计算字符串宽度函数分享

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有