天天看點

【Lua入門】安裝以及基本介紹Lua介紹Lua下載下傳Lua常用知識

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找一個你喜歡的版本安裝

【Lua入門】安裝以及基本介紹Lua介紹Lua下載下傳Lua常用知識

下載下傳安裝即可

【Lua入門】安裝以及基本介紹Lua介紹Lua下載下傳Lua常用知識

安裝成功之後打開cmd視窗執行lua如下表示安裝成功

【Lua入門】安裝以及基本介紹Lua介紹Lua下載下傳Lua常用知識

如果不成功檢視環境變量是否存在

【Lua入門】安裝以及基本介紹Lua介紹Lua下載下傳Lua常用知識
【Lua入門】安裝以及基本介紹Lua介紹Lua下載下傳Lua常用知識

Lua常用知識

Lua案例

入門第一個lua程式

【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
           

效果如下

【Lua入門】安裝以及基本介紹Lua介紹Lua下載下傳Lua常用知識

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
           
【Lua入門】安裝以及基本介紹Lua介紹Lua下載下傳Lua常用知識

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入門】安裝以及基本介紹Lua介紹Lua下載下傳Lua常用知識

函數

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))
           

結果:

【Lua入門】安裝以及基本介紹Lua介紹Lua下載下傳Lua常用知識

. . 表示拼接

結果:

【Lua入門】安裝以及基本介紹Lua介紹Lua下載下傳Lua常用知識

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
           

目錄結構為

【Lua入門】安裝以及基本介紹Lua介紹Lua下載下傳Lua常用知識
【Lua入門】安裝以及基本介紹Lua介紹Lua下載下傳Lua常用知識

解釋函數調用過程

1、引入子產品module

2、調用fun3,fun3調用fun2 fun2是一個私有函數,類似java中的共有函數調用siyou

繼續閱讀