Lua程式設計語言入門學習

來源:互聯網
上載者:User

Lua程式設計語言入門學習是本文要介紹的內容,主要是瞭解LUA指令碼語言,很適合初學者來使用,Lua程式設計語言 是一個簡潔、輕量、可擴充的指令碼語言Lua讀作/'lua/嚕啊),是葡萄牙語中"Luna"月亮)的意思。

Lua的目標是成為一個很容易嵌入其它語言中使用的語言。大多數程式員也認為它的確做到了這一點。

很多應用程式使用Lua作為自己的嵌入式指令碼語言,以此來實現可配置性、可擴充性。這其中包括大話西遊II、仙境傳說、魔獸世界、戰錘40k、博德之門、軒轅劍外傳漢之雲等。

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

Lua是一種多重編程範式的程式設計語言:它只提供了很小的一個特性集合來滿足不同編輯範式的需要,而不是為某種特定的編輯範式提供繁雜的特性支援。例如,Lua並不提供繼承這個特性,但是你可以用元表來類比它。

諸如名字空間、類這些概念都沒有在語言基本特性中實現,但是我們可以輕易的用表結構Lua唯一提供的複雜資料結構)輕易類比。Lua可以在運行時隨時構造出一個函數,並把它看作一個對象正是所謂的first class function),這個特性可以很好的滿足函數式編程的需要。這是提供了這些基本的元特性,我們可以任意的對語言進行自需的改造。

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

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

程式範例print "Hello, world!"

執行後,會在螢幕上顯示"Hello, world!"不包括前後的")。

一個比較複雜一點的例子,展示了什麼是函數,以及Lua對閉包的支援:

 
  1. function create_a_counter()  
  2.     local count = 0 
  3.     return function()  
  4.         countcount = count + 1  
  5.         return count  
  6.     end  
  7. end 

create_a_counter()會返回一個匿名函數在Lua中,函數和其他資料一樣,是可以指定給變數來儲存的)。這個匿名函數會把count加1後再回傳。在匿名函數中的變數count既不是全域變數也不是地區變數,而是一種稱為external local variable外部局部變數,又稱upvalue)的變數。這個變數的值會一直被儲存在匿名函數中。因此create_a_counter()的功能就相當於一個記數器,每次調用這個記數器,都會得到一個比上次大1的值。

類型lua 是動態類型語言,語言中沒有類型的定義,也就是寫代碼時不需要聲明變數類型,每個變數自己儲存了類型。

有8種基本類型:

 
  1. nil, boolean, number, string, userdata, function, thread, table 
 
  1. print(type("Hello world"))  > string  
  2. print(type(10.4*3))         > number  
  3. print(type(print))          > function  
  4. print(type(type))           > function  
  5. print(type(true))           > boolean  
  6. print(type(nil))            > nil  
  7. print(type(type(X)))        > string 

可以看到,最後一句代碼的輸出結果是 string,不管 X 代表什麼,結果總是 string ,因為type()函數的傳回值是 string 類型。

小結:Lua程式設計語言入門學習的內容介紹完了,希望通過本文的學習能對你有所協助!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.