Lua程序設計語言入門學習
Lua程序設計語言入門學習是本文要介紹的內(nèi)容,主要是了解LUA腳本語言,很適合初學者來使用,Lua程序設計語言 是一個簡潔、輕量、可擴展的腳本語言。Lua讀作/'lua/(嚕?。?,是葡萄牙語中"Luna"(月亮)的意思。
Lua的目標是成為一個很容易嵌入其它語言中使用的語言。大多數(shù)程序員也認為它的確做到了這一點。
很多應用程序使用Lua作為自己的嵌入式腳本語言,以此來實現(xiàn)可配置性、可擴展性。這其中包括大話西游II、仙境傳說、魔獸世界、戰(zhàn)錘40k、博德之門、軒轅劍外傳漢之云等。
Lua是一種輕量語言,它的官方版本只包括一個精簡的核心和最基本的庫。這使得Lua體積小、啟動速度快。它用標準C語言編寫并以源代碼形式開放,編譯后僅僅一百余K,可以很方便的嵌入別的程式里。和許多"大而全"的語言不一樣,網(wǎng)路通訊、圖形界面等都沒有默認提供。但是Lua可以很容易地被擴展:由宿主語言(通常是C或C++)提供這些功能,Lua可以使用它們,就像是本來就內(nèi)置的功能一樣。事實上,現(xiàn)在已經(jīng)有很多成熟的擴展模塊可供選用。
Lua是一種多重編程范式的程式設計語言:它只提供了很小的一個特性集合來滿足不同編輯范式的需要,而不是為某種特定的編輯范式提供繁雜的特性支援。例如,Lua并不提供繼承這個特性,但是你可以用元表來模擬它。
諸如名字空間、類這些概念都沒有在語言基本特性中實現(xiàn),但是我們可以輕易的用表結(jié)構(Lua唯一提供的復雜數(shù)據(jù)結(jié)構)輕易模擬。Lua可以在運行時隨時構造出一個函數(shù),并把它看作一個對象(正是所謂的first class function),這個特性可以很好的滿足函數(shù)式編程的需要。這是提供了這些基本的元特性,我們可以任意的對語言進行自需的改造。
Lua原生支援的數(shù)據(jù)類型非常之少,它只提供了 數(shù)字(缺省是雙精度浮點數(shù),可配置)、布爾量、字符串、表、子程序、協(xié)程(coroutine)以及用戶自定義數(shù)據(jù)這幾種。但是其處理表和字符串的效率非常之高,加上元表的支援,我們可以高效的模擬出需要的復雜數(shù)據(jù)類型(比如集合、數(shù)組等)。
Lua是一個動態(tài)弱類型語言,支援增量式垃圾收集策略。有內(nèi)建的,與操作系統(tǒng)無關的協(xié)作式多線程(coroutine)支援。
程式范例print "Hello, world!"
執(zhí)行后,會在屏幕上顯示"Hello, world!"(不包括前后的")。
一個比較復雜一點的例子,展示了什么是函數(shù),以及Lua對閉包的支持:
- function create_a_counter()
- local count = 0
- return function()
- countcount = count + 1
- return count
- end
- end
create_a_counter()會返回一個匿名函數(shù)(在Lua中,函數(shù)和其他資料一樣,是可以指定給變量來儲存的)。這個匿名函數(shù)會把count加1后再回傳。在匿名函數(shù)中的變量count既不是全域變量也不是區(qū)域變量,而是一種稱為external local variable(外部局部變量,又稱upvalue)的變量。這個變量的值會一直被保存在匿名函數(shù)中。因此create_a_counter()的功能就相當于一個記數(shù)器,每次調(diào)用這個記數(shù)器,都會得到一個比上次大1的值。
類型lua 是動態(tài)類型語言,語言中沒有類型的定義,也就是寫代碼時不需要聲明變量類型,每個變量自己保存了類型。
有8種基本類型:
- nil, boolean, number, string, userdata, function, thread, table
- print(type("Hello world")) > string
- print(type(10.4*3)) > number
- print(type(print)) > function
- print(type(type)) > function
- print(type(true)) > boolean
- print(type(nil)) > nil
- print(type(type(X))) > string
可以看到,***一句代碼的輸出結(jié)果是 string,不管 X 代表什么,結(jié)果總是 string ,因為type()函數(shù)的返回值是 string 類型。
小結(jié):Lua程序設計語言入門學習的內(nèi)容介紹完了,希望通過本文的學習能對你有所幫助!