Lua介紹
Lua是一門以其性能著稱的腳本語言,被廣泛應用在很多方面。Lua一般用于嵌入式應用,現在越來越多應用于遊戲當中,魔獸世界,憤怒的小鳥都有用到。
優勢:
1、Lua極易嵌入到其他程式,可當做一種配置語言。
2、提升應用性能,比如:遊戲腳本,nginx,wireshark的腳本
3、相容性強,可以直接使用 C 代碼寫的函數。比如corona 移動應用開發平台,跟PhonePap類似,
不過使用Lua做開發語言,應用可以build到iOS,Android,kindle fire,nook平台; 伺服器端應該也是Lua。
4、在給軟體提供嵌入式腳本程式設計能力上,Lua是絕佳選擇。
Lua腳本的作用:嵌入到應用程式中,給應用程式提供擴充功能。
Lua下載下傳
windows 安裝
https://github.com/rjpcomputing/luaforwindows/releases
選擇Tags找一個你喜歡的版本安裝
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiclRnblN2XjlGcjAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL1kFVNBzaE5UeJpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLxAjN0QDO1kTM4IDMxAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
下載下傳安裝即可
安裝成功之後打開cmd視窗執行lua如下表示安裝成功
如果不成功檢視環境變量是否存在
Lua常用知識
Lua案例
入門第一個lua程式
互動式程式設計就是直接輸入文法,就能執行。
腳本式程式設計需要編寫腳本,然後再執行指令 執行腳本才可以。
一般采用腳本式程式設計。(例如:編寫一個hello.lua的檔案,輸入檔案内容,并執行lua hell.lua即可)
(1)互動式程式設計(如上圖所示)
Lua 提供了互動式程式設計模式。我們可以在指令行中輸入程式并立即檢視效果。
Lua 互動式程式設計模式可以通過指令 lua -i 或 lua 來啟用
(2)腳本式程式設計
我們可以将 Lua 程式代碼保持到一個以 lua 結尾的檔案,并執行,該模式稱為腳本式程式設計。
-- 這是單行注釋
--[[ 這是多行注釋
我喜歡這樣的注釋
]]
-- 全局變量的定義 全局變量,預設的情況下,定義一個變量都是全局變量,
a = 1
-- 局部變量的定義 如果要用局部變量 需要聲明為local
local b = 2
--[[ Lua中的資料類型
Lua 是動态類型語言,變量不要類型定義,隻需要為變量指派。 值可以存儲在變量中,作為參數傳遞或結果傳回。
lua 有8中基本類型 nil boolean number string userdata function thread table]]
資料類型介紹
資料類型 | 描述 |
---|---|
nil | 這個最簡單,隻有值nil屬于該類,表示一個無效值(在條件表達式中相當于false) |
boolean | 包含兩個值:false和true |
number | 表示雙精度類型的實浮點數 |
string | 由 C 或 Lua 編寫的函數 |
function | 這個最簡單,隻有值nil屬于該類,表示一個無效值(在條件表達式中相當于false) |
userdata | 表示任意存儲在變量中的C資料結構 |
thread | 表示執行的獨立線路,用于執行協同程式 |
table | Lua 中的表(table)其實是一個"關聯數組"(associative arrays),數組的索引可以是數字、字元串或表類型。在 Lua 裡,table 的建立是通過"構造表達式"來完成,最簡單構造表達式是{},用來建立一個空表。 |
lua中有個type函數,傳回對象的類型。
執行個體:
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
流程控制
if語句
Lua if 語句 由一個布爾表達式作為條件判斷,其後緊跟其他語句組成。
文法:
if(布爾表達式)
then
--[ 在布爾表達式為 true 時執行的語句 --]
end
執行個體:
a = 2
if (a <= 2)
then
print(a)
end
if…else語句
Lua if 語句可以與 else 語句搭配使用, 在 if 條件表達式為 false 時執行 else 語句代碼塊。
文法:
if(布爾表達式)
then
--[ 布爾表達式為 true 時執行該語句塊 --]
else
--[ 布爾表達式為 false 時執行該語句塊 --]
end
執行個體:
if (a > 2)
then
print(a)
else
print("aaaaa")
end
循環
while循環[滿足條件就循環]
Lua 程式設計語言中 while 循環語句在判斷條件為 true 時會重複執行循環體語句。
文法:
while(condition)
do
statements
end
執行個體:
a=10
while( a < 20 )
do
print("a 的值為:", a)
a = a+1
end
效果如下
for循環
Lua 程式設計語言中 for 循環語句可以重複執行指定語句,重複次數可在 for 語句中控制。
文法:
1->10 1:exp1 10:exp2 2:exp3:遞增的數量
for var=exp1,exp2,exp3
do
<執行體>
end
var 從 exp1 變化到 exp2,每次變化以 exp3 為步長遞增 var,并執行一次 “執行體”。exp3 是可選的,如果不指定,預設為1。
例子:
for i = 1, 10
do
print("我是預設産生的數字", i)
end
for i = 1, 10, 2
do
print("我是步長為2産生的數", i)
end
repeat…until語句[滿足條件結束]
Lua 程式設計語言中 repeat…until 循環語句不同于 for 和 while循環,for 和 while 循環的條件語句在目前循環執行開始時判斷,而 repeat…until 循環的條件語句在目前循環結束後判斷。
文法:
repeat
statements
until( condition )
案例:
num = 5
repeat
num = num + 1
print(num)
until (num > 15)
資料結果為
函數
lua中也可以定義函數,類似于java中的方法。
例如:
function max(num1, num2)
if (num1 > num2)
then
res = num1
else
res = num2
end
return res;
end
-- 調用函數
print(max(1,2))
print(max(6,5))
結果:
. . 表示拼接
結果:
表
table 是 Lua 的一種資料結構用來幫助我們建立不同的資料類型,如:數組、字典等。
Lua也是通過table來解決子產品(module)、包(package)和對象(Object)的。
案例:
-- 初始化表
mytable = {}
-- 指定值
mytable[0]= "Lua"
-- 移除引用
mytable = nil
子產品
(1)子產品定義
子產品類似于一個封裝庫,從 Lua 5.1 開始,Lua 加入了标準的子產品管理機制,可以把一些公用的代碼放在一個檔案
裡,以 API 接口的形式在其他地方調用,有利于代碼的重用和降低代碼耦合度。
建立一個檔案叫module.lua,在module.lua中建立一個獨立的子產品,代碼如下:
-- 檔案名為 module.lua
-- 定義一個名為 module 的子產品
module = {}
-- 定義一個常量
module.constant = "這是一個常量"
-- 定義一個公有函數
function module.func1()
print("這是一個公有函數")
end
-- 定義一個私有函數
local function func2()
print("這是一個私有函數!")
end
-- 定義一個公有函數
function module.func3()
func2()
end
return module
目錄結構為
解釋函數調用過程
1、引入子產品module
2、調用fun3,fun3調用fun2 fun2是一個私有函數,類似java中的共有函數調用siyou