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中的轉義字符:
最后為我微信公眾號引個流,歡迎大家關注我的微信公眾號,大家一起學習一起進步