Lua快速入门
Posted 把梦护好别碎掉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lua快速入门相关的知识,希望对你有一定的参考价值。
Lua 是一个小巧的脚本语言,可以直接使用解析器进行解析。设计目的是为了嵌入应用程序中,从而为应用提供灵活的扩展和定制功能。
Lua 由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行。
Lua并没有提供强大的库,所以Lua 不适合作为开发独立应用程序语言。
Lua 有一个同时进行的JIT项目,提供在特定平台上的及时编译功能。
Lua 不仅可以作为扩展脚本被其他代码调用,也可以作为普通的配置文件,代替XML,ini等文件格式,并且更容易理解和维护。在目前所有脚本引擎中。Lua的速度是最快的,这一切都决定了Lua是作为嵌入式脚本的最佳选择。
Lua 不仅是一种易于扩展的语言,也是一种易整合语言 ,Lua 支持基于组件的,除了作为整合语言外,Lua 自身也是一个功能强大的语言。Lua 不仅可以整合组件,还可以编辑组件甚至完全使用 Lua 创建组件。
Lua语言特征:
1、可扩展性。Lua 的扩展性非常卓越,以至于很多人把 Lua 用作搭建领域语言的工具(注:比如游戏脚本)。Lua 被设计为易于扩展的,可以通过 Lua 代码或者 C代码扩展,Lua 的很多功能都是通过外部库来扩展的。
2、简单。Lua 本身简单,小巧;内容少但功能强大,这使得 Lua 易于学习,很容易实现一些小的应用。
3、高效率。Lua 有很高的执行效率,统计表明 Lua 是目前平均效率最高的脚本语言。
4、与平台无关。Lua 几乎可以运行在所有我们听说过的系统上,如 NextStep、OS/2、PlayStation II (Sony)、Mac OS-9、OS X、BeOS、MS-DOS、IBMmainframes、EPOC、PalmOS、MCF5206eLITE Evaluation Board、RISCOS,及所有的 Windows 和 Unix。Lua 不是通过使用条件编译实现平台无关,而是完全使用 ANSI (ISO) C,这意味着只要你有 ANSI C 编译器你就可以编译并使用 Lua。
Lua的使用者:
1、使用 Lua 嵌入到其他应用中的:很多人使用 Lua 嵌入在应用程序,比如 CGILua(搭建动态网页)、LuaOrb(访问 CORBA 对象。这些类型用 Lua-API 注册新函数,创建新类型,通过配置 Lua 就可以改变应用宿主语言的行为。
2、独立使用 Lua 的:作为一种独立运行的语言,主要用于文本处理或者只运行一次的小程序。这种应用 Lua 主要使用它的标准库来实现,标准库提供模式匹配和其它一些字串处理的功能。
3、将 Lua和 C 混合使用的: 还有一些使用者使用其他语言开发,把 Lua 当作库使用。这些人大多使用 C语言开发,但使用 Lua 建立简单灵活易于使用的接口。
Lua的开发环境:LuaforWindows(包含Lua 解析器,帮助文档,API手册)
Lua注释:
1、单行注释:--
2、多行注释:--[[ --]]
Lua语言后面可以没有 “ ; ”表示结束,在同一行也可以输入多行的内容
Lua中的数据类型:
1、nil 2、 Boolean 3、 number 4、string
5、function 6、table 7、thread 8、userdata
Lua的测试:
在编辑代码区域输入:print(‘hello world’)
点击运行按钮(上方红色位置)会在下方输出hello world则成功。
Lua变量:1、Lua中除了关键字其余一切都是变量,变量创建之前不能使用;
2、变量在定义时使用下划线开头的字母,下划线,数字序列;
3、最好不要使用下划线加大写字母的标识符。下划线加大写字母是系统预留的,不能定义。
4、Lua中变量有三种类型:全局变量,局部变量,表中的域。
Lua中的变量是全局变量,即使在函数中,如果想要定义局部变量就在变量前加local,变量的默认值均为nil。
Lua变量使用尽量使用局部变量:可以避免命名冲突,访问局部变量的速度比全局变量更快。
5、Lua的赋值:
(1)可以同时给多个变量赋值:a,b,c,d=1,2,3,4
(2)可以交换变量功能:a,b=b,a
(3)当变量个数和值得个数不一致时,Lua会以变量的个数为基础赋值:
a、变量个数>值的个数 按变量个数补足nil
b、变量个数<值得个数 多余的值会被忽略
6、Lua基本数据类型:
(1)nil:Lua中特殊的一个值,表示空值,所有没有赋值的变量都是nil,nil 即表示数值,又表示类型。给全局变量赋值nil,可以删除该变量。
(2)逻辑值:只有两个 true 和 false 两种,在控制结构的条件中除了false和nil为假,其他值都为真。
(3)数值:相当于C# 中的 double类型,可以代替整数,浮点数。
(4)字符串:由数字、字母、下划线组成。
有三种表示方式: (1)单引号:’ ’
(2)双引号:” ”
(3) 双括号 [[ ]]
分隔方式:
1、输入的是数字时直接使用 ‘,’ 隔开,
2、当输入的是字符串时可以使用 ‘..’连接字符串。必须加上空格以防止被解释错。
字符串的转换:在运行Lua时,当字符串使用算术操作符时,会自动在String 和numbers 之间进行类型转换。如果需要显式将 string 转成数字可以使用函数 tonumber(),如果 string 不是正确的数字该函数将返回 nil。反之,可以调用 tostring()将数字转成字符串 。
字符串常用方法:
(5)函数: function 本身是一种变量,可以作为函数使用,也可以作为返回值使用,作为返回值时,可以同时返回多个结果。function 结尾使用end才能结束。Lua 可以调用 lua 或者 C 实现的函数,Lua 所有标准库都是用 C 实现的。标准库包括 string 库、table 库、I/O 库、OS 库、算术库、debug 库。
这是一个打印 helloworld 的函数示例:
(6)表结构:
1、table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数组、字典等。
2、Lua table 使用关联型数组,
3、你可以用任意类型的值来作数组的索引,但这个值不能是 nil。
4、Lua table 是不固定大小的,你可以根据自己需要进行扩容。
5、Lua也是通过table来解决模块(module)、包(package)和对象(Object)的。
6、所有的元素之间,总是用“ ,”隔开。
7、所有索引值都需要用“[” 和“]”括起来;如果是字符串,还可以去掉引号和中括号。
8、如果不写索引,则索引就会被认为是数字,并按顺序自动从1往后编。
(7)Userdata:
1、userdata专门和Lua的宿主机打交道;
2、userdata 可以将 C 数据存放在 Lua 变量中;
3、userdata 在 Lua 中除了赋值和相等比较外没有预定义的操作。
4、userdata 用来描述应用程序或者使用 C 实现的库创建的新类型。
例如:用标准 I/O 库来描述文件。
(8)Thread:线程类型
Lua中的转义字符:
最后为我微信公众号引个流,欢迎大家关注我的微信公众号,大家一起学习一起进步
以上是关于Lua快速入门的主要内容,如果未能解决你的问题,请参考以下文章
快速体验,学习lua(一种可嵌入c++,c#,android,object-c等并进行互调支持热更新的脚本)的入门调试系列