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 几乎可以运行在所有我们听说过的系统上,如 NextStepOS/2PlayStation II (Sony)Mac OS-9OS XBeOSMS-DOSIBMmainframesEPOCPalmOSMCF5206eLITE Evaluation BoardRISCOS,及所有的 Windows UnixLua 不是通过使用条件编译实现平台无关,而是完全使用 ANSI (ISO) C,这意味着只要你有 ANSI C 编译器你就可以编译并使用 Lua。 

Lua的使用者:

1、使用 Lua 嵌入到其他应用中的:很多人使用 Lua 嵌入在应用程序,比如 CGILua(搭建动态网页)、LuaOrb(访CORBA 对象。这些类型用 Lua-API 注册新函数,创建新类型,通过配置 Lua 就可以改变应用宿主语言的行为。 

2、独立使用 Lua 的:作为一种独立运行的语言,主要用于文本处理或者只运行一次的小程序。这种应用 Lua 主要使用它的标准库来实现,标准库提供模式匹配和其它一些字串处理的功能。 

3、将 LuaC 混合使用的: 还有一些使用者使用其他语言开发,把 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高性能脚本语言快速入门

redis的lua脚本快速入门

Lua脚本语言快速入门手册

快速入门结合Redis使用Lua脚本

挑战一晚上从零入门lua语言,直接对标Python快速上手

快速体验,学习lua(一种可嵌入c++,c#,android,object-c等并进行互调支持热更新的脚本)的入门调试系列