Lua 5.0 参考手册
- 格式:doc
- 大小:442.50 KB
- 文档页数:76
Lua脚本语言快速学习指南Lua是一种轻量级、高效率的脚本语言,广泛应用于游戏开发和嵌入式系统中。
本指南旨在为初学者提供快速入门Lua语言的方法和技巧。
一、Lua语言概述Lua是一种简易且高度可扩展的脚本语言,由巴西里约热内卢天主教大学开发,并在全球范围内获得广泛应用。
它的设计目标是提供一种简单、灵活和高效的脚本语言,具有高度的可定制性和可嵌入性。
二、安装Lua要使用Lua,首先需要在计算机上安装Lua解释器。
官方提供了针对各个操作系统的安装包,可以根据自己的操作系统版本下载并安装相应的解释器。
三、Lua基础语法1. 注释在Lua中,注释可以使用"--"进行表示。
例如:-- 这是一条注释2. 变量Lua中的变量无需声明,直接通过赋值使用。
例如:a = 10b = "hello world"3. 控制结构Lua支持常见的控制结构,如条件语句(if...then...else)、循环语句(for、while)等。
4. 数据类型Lua提供了多种数据类型,包括数字(number)、字符串(string)、布尔值(boolean)、表(table)等。
5. 函数Lua中函数的定义和调用非常简单。
例示:function add(a, b)return a + bendresult = add(3, 5)四、常见Lua库和框架1. Lua扩展库Lua提供了丰富的扩展库,可以为开发者提供各种功能。
一些常见的扩展库如下:- LuaSocket:提供网络编程相关的功能。
- LuaFileSystem:提供文件系统相关的功能。
- LuaSQL:提供数据库访问相关的功能。
2. Lua框架除了扩展库,还有一些Lua框架可供使用,它们可以帮助开发者更高效地开发应用。
一些常见的Lua框架如下:- Corona SDK:用于游戏开发的跨平台框架。
- LÖVE:轻量级的游戏开发框架。
Lua 5.1参考手册by Roberto Ierusalimschy,Luiz Henrique de Figueiredo,Waldemar Celes云风译Copyright©,PUC-Rio.All rights reserved.1-介绍Lua是一个扩展式程序设计语言,它被设计成支持通用的过程式编程,并有相关数据描述的设施。
Lua也能对面向对象编程,函数式编程,数据驱动式编程提供很好的支持。
它可以作为一个强大、轻量的脚本语言,供任何需要的程序使用。
Lua以一个用clean C写成的库形式提供。
(所谓Clean C,指的ANSI C和C++中共通的一个子集)作为一个扩展式语言,Lua没有"main"程序的概念:它只能嵌入一个宿主程序中工作,这个宿主程序被称作embedding program或简称为host。
宿主程序可以通过调用函数执行一小段Lua代码,可以读写Lua变量,可以注入C函数让Lua代码调用。
这些扩展的C函数,可以大大的扩展了Lua可以处理事务的领域,这样就可以订制出各种语言,而它们共享一个统一的句法格式的框架。
Lua的官方发布版就包含了一个叫做lua的简单的宿主程序,它用Lua库提供了一个保证独立的Lua解释器。
Lua是一个自由软件,它的使用许可决定了对它的使用过程一般没有任何保证。
这份手册中描述的东西的实现,可以在Lua的官方网站找到,跟其它的许多参考手册一样,这份文档有些地方比较枯燥。
关于Lua的设计想法的探讨,可以看看Lua网站上提供的技术论文。
有关用Lua编程的细节介绍,可以读一下Roberto 的书,Programming in Lua(Second Edition)。
2-语言这一节从词法、语法、句法上描述Lua。
换句话说,这一节描述了哪些token(符记)是有效的,它们如何被组合起来,这些组合方式有什么含义。
关于语言的构成概念将用常见的扩展BNF表达式写出。
Lua 5.0 参考手册作者: Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes Copyright © 2003 Tecgraf, PUC-Rio. All rights reserved.译者:ShiningRay Nicholas @ NirvanaStudio给予支持1 - 绪论Lua是一种为支持有数据描述机制的一般过程式编程语言而设计的扩展编程语言。
它同样可以对面向对象语言、函数式程序设计(Functional Programming,如Lisp)以及数据驱动编程(data-driven programming)提供很好的支持。
它的目标是被用作一种强大的、轻型的配置语言。
Lua目前已经被实现为一个扩展库,是用clean C (ANSI C/C++的一个通用子集)编写的。
作为一个扩展语言,Lua没有"Main"函数的概念:它仅仅是嵌入一个宿主程序进行工作,可以称之为嵌入式编程或者简单的说是宿主编程。
这个宿主程序可以调用函数来执行Lua的代码片断,可以设置和读取Lua的变量,可以注册C函数让Lua代码调用。
Lua的能力可以扩展到更大范围,在不同的领域内,这样就在同样的语法框架下创建了你自定义的编程语言。
Lua的发行版包括一个独立的嵌入式程序,lua,他使用Lua的扩展库来提供一个完全的Lua解释器。
Lua是自由软件,通常不提供任何担保,如它的版权说明中叙述的那样。
手册中描述的实现在Lua的官方网站可以找到,。
如果需要知道Lua设计背后的一些决定和讨论,可以参考以下论文,它们都可以在Lua的网站上找到。
R. Ierusalimschy, L. H. de Figueiredo, and W. Celes. Lua---an extensible extension language. Software: Practice & Experience26#6 (1996) 635-652.∙L. H. de Figueiredo, R. Ierusalimschy, and W. Celes. The design and implementation of a language for extending applications.Proceedings of XXI Brazilian Seminar on Software and Hardware(1994) 273-283.∙L. H. de Figueiredo, R. Ierusalimschy, and W. Celes. Lua: an extensible embedded language. Dr. Dobb's Journal21#12 (Dec 1996) 26-33.∙R. Ierusalimschy, L. H. de Figueiredo, and W. Celes. The evolution of an extension language: a history of Lua, Proceedings of V Brazilian Symposium on Programming Languages(2001) B-14-B-28. Lua在葡萄牙语中的意思是“月亮”,发音是 LOO-ah。
[新版]programming in lua中文版Programming in LUA中文版Programming in LUA中文版转自csdn的BLOG(译者应该是ouyangbuxiu)序(Preface):当前很多程序语言致力于帮你编写成千上万行的代码,所以这种类型的语言提供包、命名空间、复杂的类型系统、无数的结构、上千页的文档需要学习。
Lua并不帮你编写大量的代码的程序,相反,Lua帮你用少量的代码解决问题。
为实现这个目标,像其他语言一样Lua依赖于其可扩展性。
然而与其他语言不同的是,不仅用Lua编写的软件易于扩展,其他语言比如c/c++编写的软件也很容易扩展。
一开始,Lua就被设计成很容易和传统的c/c++整合的语言。
这种语言的二元性带来很大的好处。
Lua是一个小巧简单的语言,因为Lua不致力于做c语言已经做得很好的领域,比如:性能,底层操作以及与第三方软件的接口。
Lua依赖于c 去做完成这些任务。
Lua所提供的机制是c不善于的:高级语言、动态结构、简洁、易于测试和调试。
正因为如此,Lua具有很好的安全保证,自动内存管理,容易处理字符串以及其他大小动态改变的数据。
Lua不仅是一种易于扩展的语言,也是一种易整合语言(gluelanguage);Lua支持基于组件的软件开发方法,我们可以将一些已经存在的高级组件整合在一起实现一个应用。
一般情况下,组件使用像c/c++的静态的语言编写。
Lua是我们整合各个组件的粘合剂。
通常情况下,组件(或对象)表现为具体的在程序开发过程中很少变化的、占用大量CPU时间的决定性的程序,比如窗口部件和数据结构。
对那种在产品的生命周期内变化很多的应用使用Lua可以方便的适用变化。
除了作为整合语言外,Lua自身也是一个功能强大的语言。
Lua不仅可以整合组件,还可以编辑组件甚至完全使用Lua创建组件。
除了Lua外,还有很多类似的脚本语言,比如: Perl, Tcl, Ruby, Forth, Python;下面这些特征是Lua特有的:可扩展性:Lua的扩展性非常卓越,以至于很多人把Lua当作一个搭建领域语言的工具(注:比如游戏脚本)。
Lua5.3参考手册作者 Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes译者云风, PUC-Rio 版权所有© 2015 ,在遵循 Lua license 条款下,可自由使用。
目录· 索引· 中英术语对照表1 –简介Lua 是一门扩展式程序设计语言,被设计成支持通用过程式编程,并有相关数据描述设施。
同时对面向对象编程、函数式编程和数据驱动式编程也提供了良好的支持。
它作为一个强大、轻量的嵌入式脚本语言,可供任何需要的程序使用。
Lua 由clean C(标准 C 和 C++ 间共通的子集)实现成一个库。
作为一门扩展式语言,Lua 没有"main" 程序的概念:它只能嵌入一个宿主程序中工作,该宿主程序被称为被嵌入程序或者简称宿主。
宿主程序可以调用函数执行一小段 Lua 代码,可以读写 Lua 变量,可以注册 C 函数让 Lua 代码调用。
依靠 C 函数,Lua 可以共享相同的语法框架来定制编程语言,从而适用不同的领域。
Lua 的官方发布版包含一个叫做 lua 的宿主程序示例,它是一个利用 Lua 库实现的完整独立的 Lua 解释器,可用于交互式应用或批处理。
Lua 是一个自由软件,其使用许可证决定了它的使用过程无需任何担保。
本手册所描述的实现可以在 Lua 的官方网站 找到。
与其它的许多参考手册一样,这份文档有些地方比较枯燥。
关于Lua 背后的设计思想,可以看看Lua 网站上提供的技术论文。
至于用Lua 编程的细节介绍,请参阅 Roberto 的书,Programming in Lua。
2 –基本概念本章描述了语言的基本概念。
2.1 –值与类型Lua 是一门动态类型语言。
这意味着变量没有类型;只有值才有类型。
语言中不设类型定义。
所有的值携带自己的类型。
Lua 中所有的值都是一等公民。
学习Lua编程的基础知识Lua编程是一门通用的脚本语言,最初是用于嵌入其他软件的脚本语言,因此可以在各种不同的应用领域中使用。
对于初学者来说,掌握Lua编程的基础知识非常重要。
本文将介绍Lua编程的基本概念、语法结构、变量和函数以及面向对象编程等方面的基础知识。
第一章:Lua编程概述Lua是一种轻量级、高效的脚本语言,最初由巴西里约热内卢天主教大学开发。
Lua被设计成一种扩展语言,可以方便地集成到其他应用程序中。
Lua的主要设计目标是提供简洁的语法和灵活的语义,以及良好的可扩展性和良好的性能。
第二章:Lua语法结构Lua的语法结构相对简单,尤其适合初学者入门。
Lua使用关键字来表示不同的语法结构,比如if-then-else、for循环和while 循环等。
此外,Lua还使用了一些特殊的符号和运算符来表示不同的操作,比如"+"表示加法运算,"="表示赋值操作等。
第三章:Lua变量和数据类型Lua中的变量可以存储不同的数据类型,包括数字、字符串、布尔值和表等。
变量可以在程序中使用,并且可以根据需要进行修改。
在Lua中,变量的命名规则比较宽松,可以使用字母、数字和下划线,并且区分大小写。
第四章:Lua函数在Lua中,函数是一种可以重复使用的代码块。
函数可以接收参数,并且可以返回一个值。
在Lua中,可以使用关键字"function"来定义一个函数,并且可以在其他地方调用它。
在编写函数时,我们可以使用一些特殊的关键字和符号来定义函数的参数和返回值。
第五章:Lua的面向对象编程Lua虽然是一种脚本语言,但也支持面向对象编程的特性。
在Lua中,可以使用table来模拟对象,并使用方法来调用对象的函数。
此外,Lua还支持继承和多态等面向对象的概念。
对于想要使用Lua进行大规模开发的开发者来说,掌握面向对象编程是非常重要的。
第六章:Lua的扩展库和应用Lua有丰富的扩展库,可以用于不同的应用领域。
初步LUA语言学习教程LUA是一种轻量级的脚本编程语言,最初是为游戏开发而设计的。
它具有简单易学、可嵌入、高效性和可扩展性的特点,因此在各种领域都有广泛的应用,包括游戏开发、网页编程、嵌入式系统等。
本教程旨在帮助初学者快速入门LUA语言的基本语法和常用功能。
以下是一个简单的LUA程序的例子:```lua-- 打印Hello Worldprint("Hello World")```以上代码使用print函数将字符串"Hello World"打印到控制台。
在LUA中,使用双横线(--)表示单行注释。
LUA语言的基本数据类型包括nil、boolean、number、string、table、function和userdata。
下面是一些常见类型的示例:```lua-- nil类型local a = nil-- boolean类型local b = true-- number类型local c = 123-- string类型local d = "hello"-- table类型local e = {1, 2, 3}-- function类型local f = functionprint("This is a function")end-- userdata类型local g = io.open("file.txt", "r")```在LUA中,变量的定义使用关键字local。
LUA的变量是动态类型的,可以在需要时进行类型的切换。
LUA中的流程控制语句包括if语句、for循环、while循环和repeat...until循环。
下面是一个if语句和for循环的例子:```lua-- if语句local num = 10if num > 0 thenprint("num is positive")elseif num < 0 thenprint("num is negative")elseprint("num is zero")end-- for循环for i = 1, 5 doprint(i)end```在LUA中,数组和字典都可以用table来表示。
A No-Frills Introduction to Lua5.1VM InstructionsLua5.1虚拟机指令简明手册作者Kein-Hong Man,esq.<khman AT >版本0.1,20060313Contents目录1Introduction序言22Lua Instruction Basics Lua指令基础33Really Simple Chunks十分简单的程序块54Lua Binary Chunks Lua二进制程序快75Instruction Notation指令记法156Loading Constants加载常量167Upvalues and Globals Upvalue和全局变量208Table Instructions表指令229Arithmetic and String Instructions算术和字符串指令2310Jumps and Calls跳转和调用2811Relational and Logic Instructions关系和逻辑指令3512Loop Instructions循环指令4213Table Creation表创建4814Closures and Closing创建和结束闭包5215Comparing Lua5.0.2and Lua5.1比较Lua5.0.2和Lua5.15616Digging Deeper深入探究5717Acknowledgements致谢5718ChangeLog&ToDos变更纪录&待做的57“A No-Frills Introduction to Lua 5.1VM Instructions”is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License 2.0.You are free to copy, distribute and display the work,and make derivative works as long as you give the original author credit,you do not use this work for commercial purposes,and if you alter,transform, or build upon this work,you distribute the resulting work only under a license identical to-1-this one.See the following URLs for more information:“Lua5.1虚拟机指令简明手册”遵循Creative Commons Attribution-NonCommercial-ShareAlike许可2.0。
LUA各知识点举例及详解5.11 遍历表的数组部分ipairs()允许您在不使⽤数值for循环的情况下遍历⼀个表的数组部分。
⼀些编程⼈员倾向于使⽤ipairs()⽽不是数值for循环,因为这样更简洁:1.>tbl = {"alpha", "beta", "gamma"}2.> for idx,value in ipairs(tbl) do3.>> print(idx, value)4.>> end5.1, alpha6.2, beta7.3, gammaipairs()函数接受⼀个表作为输⼊,返回遍历⼀个表的数组部分所需的所有信息,包括迭代器函数本⾝。
每⼀次迭代器函数的调⽤都返回⼀个元素的数值序号和这个元素本⾝。
这些变量可以按照您的期望任意命名,⽽且始终都在for循环的范围之内(即它们不能被这个范围之外的对象所访问)。
您可以通过在解释器⾥执⾏以下⼏个语句来更深⼊地了解ipairs()函数:1.> print(ipairs(tbl))2.function: 0x300980, table: 0x3072c0, 03.> print(tbl)4.table: 0x3072c0解释器会显⽰ipairs()所返回的⼀个迭代器函数、状态(在这⾥是您传递给它的表)和迭代器的初始值(0)。
这⾥没有什么深奥的东西,只是⼀组有⽤的函数。
5.12 遍历完整的表另⼀个函数,pairs()允许您完整地遍历⼀个表,包括表的数组部分和散列表部分。
使⽤⽅法和ipairs()⼀样:将表传⼊其中,并作为范型for循环的⼀部分来使⽤即可:1.>tbl = {"alpha", "beta", ["one"] = "uno", ["two"] = "dos"}2.> for key,value in pairs(tbl) do3.>> print(key, value)4.>> end5.1, alpha6.2, beta7.one, uno8.two, dos使⽤pairs()函数遍历在前⾯的样例中,pairs()函数好像是以元素添加的顺序来遍历的,但是这只是⼀个巧合。
Lua 5.0 参考手册作者: Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes Copyright © 2003 Tecgraf, PUC-Rio. All rights reserved.译者:ShiningRay Nicholas @ NirvanaStudio给予支持1 - 绪论Lua是一种为支持有数据描述机制的一般过程式编程语言而设计的扩展编程语言。
它同样可以对面向对象语言、函数式程序设计(Functional Programming,如Lisp)以及数据驱动编程(data-driven programming)提供很好的支持。
它的目标是被用作一种强大的、轻型的配置语言。
Lua目前已经被实现为一个扩展库,是用clean C (ANSI C/C++的一个通用子集)编写的。
作为一个扩展语言,Lua没有"Main"函数的概念:它仅仅是嵌入一个宿主程序进行工作,可以称之为嵌入式编程或者简单的说是宿主编程。
这个宿主程序可以调用函数来执行Lua的代码片断,可以设置和读取Lua的变量,可以注册C函数让Lua代码调用。
Lua的能力可以扩展到更大范围,在不同的领域内,这样就在同样的语法框架下创建了你自定义的编程语言。
Lua的发行版包括一个独立的嵌入式程序,lua,他使用Lua的扩展库来提供一个完全的Lua解释器。
Lua是自由软件,通常不提供任何担保,如它的版权说明中叙述的那样。
手册中描述的实现在Lua的官方网站可以找到,。
如果需要知道Lua设计背后的一些决定和讨论,可以参考以下论文,它们都可以在Lua的网站上找到。
R. Ierusalimschy, L. H. de Figueiredo, and W. Celes. Lua---an extensible extension language. Software: Practice & Experience26#6 (1996) 635-652.∙L. H. de Figueiredo, R. Ierusalimschy, and W. Celes. The design and implementation of a language for extending applications.Proceedings of XXI Brazilian Seminar on Software and Hardware(1994) 273-283.∙L. H. de Figueiredo, R. Ierusalimschy, and W. Celes. Lua: an extensible embedded language. Dr. Dobb's Journal21#12 (Dec 1996) 26-33.∙R. Ierusalimschy, L. H. de Figueiredo, and W. Celes. The evolution of an extension language: a history of Lua, Proceedings of V Brazilian Symposium on Programming Languages(2001) B-14-B-28. Lua在葡萄牙语中的意思是“月亮”,发音是 LOO-ah。
2 - 语言这一章将描述Lua的词法、语法和语义结构。
换句话说,这一章会讲什么标记是合法的,他们是如何组合的,以及他们的组合是什么含义。
语言结构会使用常用的扩展BNF范式来解释,如{a} 表示0或多个a, [a] 表示a是可选的(0个或1个)。
非终端字体(不能显示的)用斜体表示,关键字是粗体,其他终端符号用typewriter(等宽)字体,并用单引号引出。
2.1 - 词法约定Lua中的标识符(Identifiers)可以是任意的数字、字符和下划线“_”,但不能以数字开头。
这条规则符合大多数编程语言中的标识符的定义。
(字符的具体定义要根据系统的地区设置:任何区域设置可以认同的字母表中的字母都可以用在标识符中。
)下面的关键字(keywords)为保留关键字不可以作为标识符出现:and break do else elseifend false for function ifin local nil not orrepeat return then true until whileLua对大小写敏感:and是一个保留字,但是 And 和 AND 是两个不一样的、但都合法的标识符。
习惯上来说,以下划线开始且后面跟着大写字母的标识符 (例如 _VERSION) 是为Lua内部变量所保留的。
下面的字符(串)是其他的一些标记:+ - * / ^ =~= <= >= < > ==( ) { } [ ]; : , . .. ...字符串(Literal strings)以单引号或者双引号定界,同时可以包含以下C 语言风格的转义字符:∙\a --- 铃声(bell)∙\b --- 回退(backspace)∙\f --- form feed∙\n --- 新行(newline)∙\r --- 回车(carriage return)∙\t --- 水平制表符(horizontal tab)∙\v --- 垂直制表符(vertical tab)∙\\ --- 反斜杠(backslash)∙\" --- 双引号(quotation mark)∙\' --- 单引号(apostrophe)∙\[ --- 左方括号(left square bracket)∙\] --- 右方括号(right square bracket)另外,一个 `\newline´(一个反斜杠加上一个真正的换行符)会导致字符串内的分行。
字符串中的字符也可以使用转义字符`\ddd´通过数字值来指定。
ddd是最多为3个十进制数字的序列。
Lua中的字符串也可以包含8进制数字,包括嵌入零,它可以表示为 `\0´。
字符串也可以用双方括号来定界[[ ··· ]]。
这种括号方式的语法,字符串可以跨越多行,也可以包含嵌套的,同时不会转义任何序列。
方便起见,当开始的 `[[´后面紧跟着一个换行符的话,这个换行符不会包括在字符串内。
举个例子:在一个使用ASCII编码(其中`a´的编码是97,换行符是10,字符`1´是49)的系统中,以下四种格式得到的都是同一个字符串:(1) "alo\n123\""(2) '\97lo\10\04923"'(3) [[alo123"]](4) [[alo123"]]数值常量(Numerical constants)可以有一个可选的底数部分和一个可选的指数部分。
以下是有效的数值常量:3 3.0 3.1416 314.16e-2 0.31416E1注释(Comments)可以在任何地方出现,必须在最前面加上双减号 (--)。
如果紧接着 -- 的文本不是 [[,那么会认为是一个短注释(short comment),这一行往后到行尾都是注释。
否则,会认为是一个常注释(long comment),注释直到相应的 ]]结束。
长注释可以跨越多行,同时可以包含嵌套的[[ ··· ]] 括号对。
为了方便起见,文件的第一行如果是以#开始,这个机制允许Lua在Unix系统中用做一个脚本解释器(见 6)。
2.2 - 值和类型Lua是一种动态类型语言(dynamically typed language)。
这意味着变量是没有类型的;只有值才有。
语言中没有类型定义。
所有的值都包含他自身的类型。
Lua中有八种基本类型:nil, boolean, number, string, function, userdata,thread和table。
Nil空类型只对应nil值,他的属性和其他任何值都有区别;通常它代表没有有效的值。
Boolean布尔类型有两种不同的值false and true。
在Lua中,nil and false代表成假条件;其他任何值都代表成真条件。
Number数字类型表示实数(双精度浮点数)。
(构建Lua解释器时也可以很容易地用其他内部的表示方式表示数字,如单精度浮点数或者长整型)。
String字符串类型表示一个字符的序列。
Lua 字符串可以包含8位字符,包括嵌入的('\0') (见 2.1)。
函数是Lua中的第一类值(first-class values)。
也就是说函数可以保存在变量中,当作参数传递给其他函数,或者被当作结果返回。
Lua可以调用(和处理)Lua写的函数和C写的函数(见 2.5.7)。
用户数据类型(userdata)提供了让任意C数据储存在Lua变量中的功能。
这种类型直接对应着一块内存,Lua中也没有任何预先定义的操作,除了赋值和一致性比较。
然而,通过使用元表(metatables),程序员可以定义处理userdata 的操作。
(见 2.8)。
Userdata 值不能在Lua中建立或者修改,只能通过C API。
这保证了宿主程序的数据完整性。
线程(thread)类型代表了相互独立的执行线程,用来实现同步程序。
表(table)类型实现了联合数组,也就是说,数组不仅可以使用数字,还能使用其他的值(除了nil)。
而且,tables 可以是互异的(heterogeneous),他们可以保存任何类型的值(除了nil)。
Tables 是Lua中唯一的数据结构机制;他们可以用来表示一般数组,特征表,集合,记录,图,树等等。
如果要表示记录,Lua使用字段名作为索引。
语言支持 这种比较优美的表示方式,还有 a["name"]。
在Lua中有几种建立表的简便方法(见 2.5.6)。
就像索引一样,表字段的值也可以是任何类型(除了nil)。
特别需要注意地是,由于函数是第一型的值,表字段也可以包含函数。
这样表也可以支持方法(methods)(见 2.5.8)。
表,函数,和用户数据类型的值都是对象(objects):变量不会包含他们的实际值,只是一个他们的引用(references)。
赋值,参数传递和函数返回只是操作这些值的引用,这些操作不会暗含任何拷贝。
库函数 type 返回一个字符串描述给出值所表示的类型(见 5.1)。
2.2.1 - 类型转换Lua提供运行时的数字和字符串值得自动转换。