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中的轉義字符:

                             

 

 

 

 

 

最后為我微信公眾號引個流,歡迎大家關注我的微信公眾號,大家一起學習一起進步

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM