日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

openresty开发系列12--lua介绍及常用数据类型简介

發布時間:2025/3/20 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 openresty开发系列12--lua介绍及常用数据类型简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

openresty開發系列12--lua介紹及常用數據類型簡介

lua介紹
? 1993 年在巴西里約熱內盧天主教大學(Pontifical Catholic University of Rio de Janeiro in Brazil)誕生了一門編程語言,發明者是該校的三位研究人員,他們給這門語言取了個浪漫的名字——Lua,在葡萄牙語里代表美麗的月亮。事實證明她沒有糟蹋這個優美的單詞,Lua 語言正如它名字所預示的那樣成長為一門簡潔、優雅且富有樂趣的語言。
? Lua 從一開始就是作為一門方便嵌入(其它應用程序)并可擴展的輕量級腳本語言來設計的,因此她一直遵從著簡單、小巧、可移植、快速的原則,官方實現完全采用 ANSI C 編寫,能以 C 程序庫的形式嵌入到宿主程序中。LuaJIT 2 和標準 Lua 5.1 解釋器采用的是著名的 MIT 許可協議。正由于上述特點,所以 Lua 在游戲開發、機器人控制、分布式應用、圖像處理、生物信息學等各種各樣的領域中得到了越來越廣泛的應用。其中尤以游戲開發為最,許多著名的游戲都有lua的身影
Lua 和 LuaJIT 的區別
? Lua 非常高效,它運行得比許多其它腳本(如 Perl、Python、Ruby)都快,這點在第三方的獨立測評中得到了證實。盡管如此,仍然會有人不滿足,他們總覺得"嗯,還不夠快!"。LuaJIT 就是一個為了再榨出一些速度的嘗試,它利用即時編譯(Just-in Time)技術把 Lua 代碼編譯成本地機器碼后交由 CPU 直接執行。LuaJIT 2 的測評報告表明,在數值運算、循環與函數調用、協程切換、字符串操作等許多方面它的加速效果都很顯著。憑借著 FFI 特性,LuaJIT 2 在那些需要頻繁地調用外部 C/C++ 代碼的場景,也要比標準 Lua 解釋器快很多。目前 LuaJIT 2 已經支持包括 i386、x86_64、ARM、PowerPC 以及 MIPS 等多種不同的體系結構。
? LuaJIT 是采用 C 和匯編語言編寫的 Lua 解釋器與即時編譯器。LuaJIT 被設計成全兼容標準的 Lua 5.1 語言,同時可選地支持 Lua 5.2 和 Lua 5.3 中的一些不破壞向后兼容性的有用特性。因此,標準 Lua 語言的代碼可以不加修改地運行在 LuaJIT 之上。LuaJIT 和標準 Lua 解釋器的一大區別是,LuaJIT 的執行速度,即使是其匯編編寫的 Lua 解釋器,也要比標準 Lua 5.1 解釋器快很多,可以說是一個高效的 Lua 實現。另一個區別是,LuaJIT 支持比標準 Lua 5.1 語言更多的基本原語和特性,因此功能上也要更加強大。
?
2)應用場景

??? 1. 在很多時候,我們可以將Lua直接嵌入到我們的應用程序中,如游戲、監控服務器等。這樣的應用方式對于程序的最終用戶而言是完全透明的,但是對于程序本身,其擴展性將會得到極大的增強。
?? ?
  2. 將Lua視為一種獨立的腳本語言,通過它來幫助我們完成一些軟件產品的輔助性工具的開發。比如在我們之前的數據分析產品中,我們通過編寫Lua腳本,將每個用戶不同格式的數據重新格式化為我們的軟件平臺能夠讀取的格式,之后再將格式化的后的數據加載到數據庫中,或者是寫入我們的分析引擎可以識別的數據分析文件中。這其中Lua僅僅用于文件格式的規格化過程,至于此后的操作,都是通過Lua調用我們的C語言導出函數來完成的。
?? ?
  3. 將Lua應用于應用程序的動態配置部分。比如移動智能設備或嵌入式設備,它們的顯示分辨率在很多情況下都是非標準的,如果我們為每一款設備都維護一套相關的配置信息,這無疑會加大我們程序的維護開銷,如果我們將這段動態配置邏輯交由Lua腳本完成,那么這對于程序配置的靈活性而言,將會得到很大的提高。甚至可以是這樣,運行在移動終端設備上的應用程序,在啟動主窗體之前先和服務器建立連接,在服務器確認設備的各種參數后,再將和該設備顯示相關的Lua腳本發送給設備客戶端,這樣客戶端在得到Lua腳本之后,就可以立刻執行它以得到最新的動態配置信息。

3)主要優勢
1. 高效性:
  作為一種腳本語言,Lua的高效是眾所周知的,因此在實際應用中,很多大型程序都會考慮將代碼中易變的部分用Lua來編寫。這不但沒有明顯降低系統的運行效率,反而使程序的穩定性和可擴展性得到了顯著的提升。

  2. 可移植性:
  在官方網站中提供了基于多種平臺的發布包,如Linux/Unix、Windows、Symbian和Pocket PC等。
?? ?
  3. 可嵌入性:
  在語言設計之初,Lua就被準確的定位為嵌入式腳本語言,因此Lua的設計者們為Lua提供了與其他編程語言之間的良好交互體驗,這特別體現在和C/C++之間的交互上。對于其他語言,如Java和C#,也可以將Lua作為其嵌入式腳本引擎,并在代碼中進行直接的交互。
?? ?
  4. 簡單強大:
  盡管是過程化腳本語言,但由于Lua的設計者們為Lua提供了meta-mechanisms機制,這不僅使Lua具備了一些基本的面向對象特征,如對象和繼承,而且仍然保持了過程化語言所具有的語法簡單的特征。
?? ?
  5. 小巧輕便:
  在最新版本(5.2.0)的Lua中,僅僅包含了大約20000行的C語言代碼,編譯后的庫文件大小約為240K左右,因此這對于很多資源有限的平臺有著極強的吸引力。
?? ?
  6. 免費開源:
  MIT Licence可以讓Lua被免費的用于各種商業程序中。

lua的常用數據類型簡介

一)注釋單行注釋兩個減號是單行注釋: --注釋內容多行注釋--[[多行注釋多行注釋--]]二)基本類型Lua中有8個基本類型分別為:nil(空) -----> java null(空)boolean(布爾)、 number(數字) 雙精度浮點數 ---> java int double floatstring(字符串)table(表) ----> 類似 java mapfunction(函數)、 userdata(自定義的類型)、 thread(線程/協程)使用type函數測試給定變量或者值的類型三)變量1)變量命名大小寫區分命名規則Lua 標示符用于定義一個變量,函數獲取其他用戶定義的項。標示符以一個字母 A 到 Z 或 a 到 z 或下劃線 _ 開頭后加上0個或多個字母,下劃線,數字(0到9)。_temp一般約定,以下劃線開頭連接一串大寫字母的名字(比如 _VERSION)被保留用于 Lua 內部全局變量。關鍵詞:and break do elseelseif end false true forfunction if in localnil not or return then repeat untilwhile變量名字,它的大小寫是相關的。也就是說,A和a是兩個不同的變量定義一個變量的方法就是賦值。"="操作就是用來賦值的。2)全局變量在默認情況下,變量總是認為是全局的。除非,你在前面加上"local"。這一點要特別注意,因為你可能想在函數里使用局部變量,卻忘了用local來說明.全局變量不需要聲明,給一個變量賦值后即創建了這個全局變量,訪問一個沒有初始化的全局變量也不會出錯,只不過得到的結果是:nil。 > print(b)nil> b=10> print(b)10> 如果你想刪除一個全局變量,只需要將變量賦值為nil。b = nilprint(b) --> nil這樣變量b就好像從沒被使用過一樣。換句話說, 當且僅當一個變量不等于nil時,這個變量即存在。3)局部變量變量名稱 前加修飾符 local四)nil類型> print(type(a))nil-------------------------對于全局變量和 table,nil 還有一個"刪除"作用,給全局變量或者 table 表里的變量賦一個 nil 值,等同于把它們刪掉,執行下面代碼就知:tab1 = { key1 = "val1", key2 = "val2" }for k, v in pairs(tab1) doprint(k .. " - " .. v)endprint('---------')tab1.key1 = nilfor k, v in pairs(tab1) doprint(k .. " - " .. v)end-----------------------------判斷nil類型 作比較時應該加上雙引號 "type(X) ---> 返回的類型 其實是string> type(X)==nilfalse> type(X)=="nil"true

?

轉載于:https://www.cnblogs.com/reblue520/p/11429487.html

總結

以上是生活随笔為你收集整理的openresty开发系列12--lua介绍及常用数据类型简介的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。