1. 程式人生 > >Lua語言語法講解的一點準備文章

Lua語言語法講解的一點準備文章

(本文主要是對Lua的一點小解釋和對後面的準備,如果讀者不喜歡,可以略過……)

什麼是Lua語言?

Lua是一種輕量語言,它的官方版本只包括一個精簡的核心和最基本的庫。這使得Lua體積小、啟動速度快。它用標準C語言編寫並以源 程式碼形式開放,編譯後僅僅一百餘K,可以很方便的嵌入別的程式裡。和許多”大而全”的語言不一樣,網路通訊、圖形介面等都沒有預設提供。但是Lua可以很 容易地被擴充套件:由宿主語言(通常是C或C++)提供這些功能,Lua可以使用它們,就像是本來就內建的功能一樣。事實上,現在已經有很多成熟的擴充套件模組可供選用。

Lua是一種多重程式設計正規化的程式設計語言:它只提供了很小的一個特性集合來滿足不同編輯正規化的需要,而不是為某種特定的編輯正規化提供繁雜的特性支援。例如,Lua並不提供繼承這個特性,但是你可以用元表來模擬它。諸如名字空間、類這些概念都沒有在語言基本特性中實現,但是我們可以輕易的用表結構(Lua唯一提供的複雜資料結構)輕易模擬。Lua可以在執行時隨時構造出一個函式,並把它看作一個物件(正是所謂的first class function),這個特性可以很好的滿足函數語言程式設計的需要。這是提供了這些基本的元特性,我們可以任意的對語言進行自需的改造。

Lua原生支援的資料型別非常之少,它只提供了 數字(預設是雙精度浮點數,可配置)、布林量、字串、表、子程式、協程(coroutine)以及使用者自定義資料這幾種。但是其處理表和字串的效率非常之高,加上元表的支援,我們可以高效的模擬出需要的複雜資料型別(比如集合、陣列等)。

Lua是一個動態弱型別語言,支援增量式垃圾收集策略。有內建的,與作業系統無關的協作式多執行緒(coroutine)支援。

Lua有什麼優點?

Lua語言是一個巴西人發明的,98年開始制定,最後一個版本5.1.4是08年釋出的。不過到了暴雪做魔獸世界和魔獸爭霸時才將其發揚光大了,真正成了當之無愧的“指令碼之王”。

其優越性主要表現為以下幾個方面:

① 可擴充套件性。Lua的擴充套件性非常卓越,以至於很多人把Lua用作搭建領域語言的工具(注:比如遊戲指令碼)。Lua被設計為易於擴充套件的,可以通過Lua程式碼或者C程式碼擴充套件,Lua的很多功能都是通過外部庫來擴充套件的。Lua很容易與C/C++、java、fortran、Smalltalk、Ada,以及其他語言介面。

② 簡單。Lua本身簡單,小巧;內容少但功能強大,這使得Lua易於學習,很容易實現一些小的應用。他的完全釋出版(程式碼、手冊以及某些平臺的二進位制檔案)僅用一張軟盤就可以裝得下。

③ 高效率。Lua有很高的執行效率,統計表明Lua是目前平均效率最高的指令碼語言。

④ 與平臺無關。Lua幾乎可以執行在所有我們聽說過的系統上,如NextStep、OS/2、PlayStation II (Sony)、Mac OS-9、OS X、BeOS、MS-DOS、IBM mainframes、EPOC、PalmOS、MCF5206eLITE Evaluation Board、RISC OS,及所有的Windows和Unix。Lua不是通過使用條件編譯實現平臺無關,而是完全使用ANSI (ISO) C,這意味著只要你有ANSI C編譯器你就可以編譯並使用Lua。

什麼人適合使用Lua?

Lua使用者分為三大類:使用Lua嵌入到其他應用中的、獨立使用Lua的、將Lua和C混合使用的。

第一:很多人使用Lua嵌入在應用程式,比如CGILua(搭建動態網頁)、LuaOrb(訪問CORBA物件。這些型別用Lua-API註冊新函式,建立新型別,通過配置Lua就可以改變應用宿主語言的行為。通常,這種應用的使用者並不知道Lua是一種獨立的語言。例如:CGILua使用者一般會認為Lua是一種用於Web的語言。

第二:作為一種獨立執行的語言,Lua也是很有用的,主要用於文字處理或者只執行一次的小程式。這種應用Lua主要使用它的標準庫來實現,標準庫提供模式匹配和其它一些字串處理的功能。我們可以這樣認為:Lua是文字處理領域的嵌入式語言。

第三:還有一些使用者使用其他語言開發,把Lua當作庫使用。這些人大多使用C語言開發,但使用Lua建立簡單靈活易於使用的介面。

本書面向以上三類讀者。書的第一部分闡述了語言的本身,展示語言的潛在功能。我們講述了不同的語言結構,並用一些例子展示如何解決實際問題。這部分既包括基本的語言的控制結構,也包括高階的迭代子和協同。

第二部分重點放在Lua特有的資料結構——tables上,討論了資料結構、永續性、包及面向物件程式設計,這裡我們將看到Lua的真正強大之處。

第三部分介紹標準庫。每個標準庫一章:數學庫、table庫、string庫、I/O庫、OS庫、Debug庫。

如何使用Lua?

1.從Lua官方網站下載lua原始碼包,最新版本下載地址為:

2.下載了之後,裡面的結構為:doc(幫助文件) etc(一些額外補充的檔案) src(Lua語法原始碼) test(測試使用的例子)

3.網上有的地方提供Lua.exe和Luac.exe,用來執行Lua指令碼和將編寫的Lua指令碼打包成二進位制檔案,加快編譯,同時也可以檢查你寫的指令碼的正確性。還有的地方提供其他的工具等等。

有人說這種方法可以得到Lua.exe luac.exe,我自己試了一下,在Windows下不可以的,各位請自己試下,如果生成不了那兩個檔案,可以下載LuaBind或者LuaPlus,裡面有編譯好的檔案。方法如下:

解壓檔案,比如解壓到 D:/lua-5.1.2 資料夾內(以下均以此路徑為例)。

D:/lua-5.1.2 內,存在名為 /etc 的子目錄。在此目錄下找到 luavs.bat 檔案,並將它複製到 D:/lua-5.1.2 中。

雙擊執行 luavs.bat 批處理檔案,如果執行成功,在 D:/lua-5.1.2/src 資料夾中會存在 luac.exe lua.exe兩個檔案。

D:/lua-5.1.2/src 加入到系統路徑中

4.Lua檔案的編輯器,確切的說Lua沒有一個標準的編輯器,不像其他語言那樣都有一個合適的工具來編輯文字,不過Lua檔案可以隨便使用一款文字編輯器來編輯,有一些朋友自己開發的編輯器,像LuaEdit什麼的,不過個人覺得使用NotePad++就足夠了,免費開源,支援絕大數程式語言著色,非常好用,以後有機會會詳細介紹該款編輯器的。

5.補充說明一下,很多人可能要問,那這個怎麼在Windows系統上配置?再次說明,lua是一門語言,其配置就是將其加入到系統路徑中,然後將寫出來的指令碼用lua.exe測試一下就行了

好了,下來我們就要正式開始學習lua的語法了,前面的可能沒什麼用,但是瞭解一些總是沒什麼壞處。下文開始講Lua的語法了,希望大家關注!