您好,欢迎光临本网站![请登录][注册会员]  
文件名称: Lua 5.3 参考手册.pdf
  所属分类: 其他
  开发工具:
  文件大小: 1mb
  下载次数: 0
  上传时间: 2019-08-18
  提 供 者: fan_*****
 详细说明:lua开发文档2019/8/18 Lua53参考手册 索引一张表的原则遵循语言中的直接比较规则。当且仅当i与j直接比较相等时(即不通 过元方法的比较),表达式a[订与a[j表示了表中相同的元素。特别指出:一个可以完 全表示为整数的浮点数和对应的整数相等(例如:1.0==1)。为了消除歧义,当一个 可以完全表示为整数的浮点数做为键值时,都会被转换为对应的整数储存。例如,当你 写a[2.0]=true时,实际被插入表中的键是整数2。(另一方面,2与"2"是两个不 同的Lua值,故而它们可以是同一张表中的不同项。) 表、函数、线程、以及完全用户数据在Lua中被称为劝彖:变量并不真的持有它们的 值,而仅保存了对这些对象的引/赋值、参数传递、函数返回,都是针对引用而不是 针对值的操作,这些操作均不会做任何形式的隐式拷贝。 库函数type用于以字符串形式返回给定值的类型。(参见§6,1)。 2.2-环境与全局环境 后面在§32以及§333会讨论,引用一个叫var的自由名字(指在任何层级都未被声明 的名字)在句法上都被翻译为ENV.var。此外,每个被编译的Lua代码块都会有一个 外部的局部变量叫_ENV(参见§3.3.2),因此,ENV这个名字永远都不会成为一个 代码块中的自由名字。 在转译那些自由名字时,ENV是否是那个外部的局部变量无所谓。_ENV和其它你可以 使用的变量名没有区别。这里特别指出,你可以定义一个新变量或指定一个参数叫这个名 字。当编译器在转译自由名字时所用到的_ENV,指的是你的程序在那个点上可见的那 个名为ENV的变量。(Lua的可见性规则参见§3.5) 被ENV用于值的那张表被称为环境。 Lua保有—个被称为全局环境特别环境。它被保存在C注册表(参见§4.5)的一个特别 索引下。在凵ua中,全局变量_G被初始化为这个值。(G不被内部任何地方使 用。) 当Lua加载一个代码块,EN这个上值的默认值就是这个全局环境(参见|oad)。因 此,在默认情况下,La代码中提及的自由名字都指的全局环境中的相关项(因此,它们 也被称为全局变量)。此外,所有的标准库都被加载入全局环境,一些函数也针对这个 环境做操作。你可以用load(或 loadfile)加载代码块,并赋予它们不同的环境。(在 C里,当你加载一个代码块后,可以通过改变它的第一个上值来改变它的环境。) 2.3-错误处理 由于Lua是一门嵌入式扩展语言,其所有行为均源于宿主程序中C代码对某个Lua库函 数的调用。(单独使用Lua时,lua程序就是宿主程序。)所以,在编译或运行Lua代 码块的过程中,无论何时发生错误,控制权都返回给宿主,由宿主负责采取恰当的措施 (比如打印错误消息)。 可以在Lua代码中调用 error函数来显式地抛出一个错误。如果你需要在Lua中捕获这 些错误,可以使用pca!或ⅹpca!在馍式下调用一个函数。 https://www.runoab.com/manual/lua53dac/manual.html 3/97 2019/8/18 Lua53参考手册 无论何时出现错误,都会抛出一个携带错误信息的菪对象(淏消息)。Lua本身只 会为错误生成字符串类型的错误对象,但你的程序可以为错误生成任何类型的错误对象, 这就看你的Lua程序或宿主程序如何处理这些错误对象 使用xpca或|ua_pca时,你应该提供一个消息处理函数用于错误抛出时调用。该 函数需接收原始的错误消息,并返回一个新的错误消息。它在错误发生后栈尚未展开时调 用,因此可以利用栈来收集更多的信息,比如通过探知栈来创建一组栈回溯信息。同 时,该处理函数也处于保护模式下,所以该函数内发生的错误会再次触发它(递归)。如 果递归太深,Lua会终止调用并返回一个合适的消息 24-元表及元方法 Lua中的每个值都可以有一个元表这个元表就是一个普通的Lua表,它用于定义原 始值在特定操作下的行为。如果你想改变一个值在特定操作下的行为,你可以在它的元表 中设置对应域。例如,当你对非数字值做加操作时,Lua会检查该值的元表中的 "add"域下的函数。如果能找到,Lua则调用这个函数来完成加这个操作。 元表中的键对应着不同的萝仵名;键关联的那些值被称为元方法。在上面那个例子中 引用的事件为"add",完成加操作的那个函数就是元方法。 你可以用 getmetatable函数来获取任何值的元表。 使用 setmetatable来替换一张表的元表。在Lua中,你不可以改变表以外其它类型的值 的元表(除非你使用调试库(参见§6.10));若想改变这些非表类型的值的元表,请使 用CAPI。 表和完全用户数据有独立的元表(当然,多个表和用户数据可以共享同一个元表)。其 它类型的值按类型共亨元表;也就是说所有的数字都共亨同一个元表,所有的字符串共 享另一个元表等等。默认情况下,值是没有元表的,但字符串库在初始化的时候为字符 串类型设置了元表(参见§64)。 元表决定了一个对象在数学运算、位运算、比较、连接、取长度、调用、索引时的行为。 元表还可以定义一个函数,当表对象或用户数据对象在垃圾回收(参见§25)时调用它。 接下来会给出一张元表可以控制的事件的完整列表。每个操作都用对应的事件名来区分。 每个事件的键名用加有'’前缀的字符串来表示;例如"add"操作的键名为字符串 "add"。注意、Lua从元表中直接获取元方法;访问元表中的元方法永远不会触发另 一次元方法。下面的代码模拟了Lua从一个对象obj中获取一个元方法的过程: rawget(getmetatable(objor (, .. event_name) 对于一元操作符(取负、求长度、位反),元方法调用的时候,第二个参数是个哑元,其 值等于第一个参数。这样处理仅仅是为了简化Lua的内部实现(这样处理可以让所有的 操作都和二元操作一致),这个行为有可能在将来的版本中移除。(使用这个额外参数 的行为都是不确定的。) ada"∷:+操作。如果仼何不是数字的值(包括不能转换为数字的字符串)做加 法,Lua就会尝试调用元方法。首先、Lua检查第一个操作数(即使它是合法 的),如果这个操作数没有为"_add"事件定义元方法,La就会接着检査第二 个操作数。一旦Lua找到了元方法,它将把两个操作数作为参数传入元方法,元 https://www.runoab.com/manual/lua53dac/manual.html 4/97 2019/8/18 Lua53参考手册 方法的结果(调整为单个值)作为这个操作的结果。如果找不到元方法,将抛出· 个错误。 "sub":-操作。行为和"add"操作类似。 "mu":*操作。行为和"add"操作类似。 "div":/操作。行为和"add"操作类似。 ·"mod":%操作。行为和"add"操作类似。 pow":^(次方)操作。行为和"add"操作类似 ·"unm":-(取负)操作。行为和"add"操作类似。 idiv"://(向下取整除法)操作。行为和"add"操作类似。 "band":&(按位与)操作。行为和"ad"操作类似,不同的是Lua会在任何- 个操作数无法转换为整数时(参见§34.3)尝试取元方法。 ·"bor":|(按位或)操作。行为和"band"操作类似。 bxor":~(按位异或)操作。行为和"band"操作类似。 "bnot":~(按位非)操作。行为和"band"操作类似。 sh":<<(左移)操作。行为和"band"操作类似。 "shr"∷:>>(右移)操作。行为和"band"操作类似。 concat"::(连接)操作。行为和"add"操作类似,不同的是Lua在任何操作 数即不是一个字符串也不是数字(数字总能转换为对应的字符串)的情况下尝试元 方法。 ·"len":#(取长度)操作。如果对象不是字符串,Lua会尝试它的元方法。如果有 元方法,则调用它并将对象以参数形式传入,而返回值(被调整为单个)则作为结 果。如果对象是一张表且没有元方法,Lua使用表的取长度操作(参见§34.7)。 其它情况,均抛出错误。 ·"eq":==(等于)操作。和"ad"操作行为类似,不同的是Lua仅在两个值都 是表或都是完全用户数据且它们不是同一个对象时才尝试元方法。调用的结果总会 被转换为布尔量。 "It":<(小于)操作。和"ad"操作行为类似,不同的是Lua仅在两个值不全为 整数也不全为字符串时才尝试元方法。调用的结果总会被转换为布尔量。 ·"le"∷:<=(小于等于)操作。和其它操作不同,小于等于操作可能用到两个不同 的事件。首先,像"It"操作的行为那样,Lua在两个操作数中查找"_le"元方 法。如果一个元方法都找不到,就会再次查找"t"事件,它会假设a<=b等 价于not(b
(系统自动生成,下载前可以参看下载内容)

下载文件列表

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度
  • 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
 相关搜索: Lua5.3参考手册.pdf
 输入关键字,在本站1000多万海量源码库中尽情搜索: