欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報激活碼778899分享:Lua腳本

柚子快報激活碼778899分享:Lua腳本

http://yzkb.51969.com/

Lua腳本

十一、【Lua】11.1.概念11.2.特性11.2.1.輕量級11.2.2.可擴展11.2.3.支持面向過程編程和函數(shù)式編程

11.3.應用場景11.4.Lua的安裝11.4.1. 點擊download可以找到對應版本的下載地址11.4.2. 編譯安裝11.4.3.如果在執(zhí)行make linux test失敗,報如下錯誤:11.4.4.驗證是否安裝成功

11.5.Lua的語法11.5.1.第一個Lua程序11.5.2.Lua的注釋11.5.3.標識符11.5.4.關鍵字11.5.5.運算符11.5.6.全局變量&局部變量

11.6.Lua數(shù)據(jù)類型11.6.1.Lua有8個數(shù)據(jù)類型11.6.2.nil11.6.3.boolean11.6.4.number11.6.5.string11.6.6.table11.6.7.function11.6.8.thread11.6.9.userdata

11.7.Lua控制結(jié)構(gòu)11.7.1.if then elseif else11.7.2.while循環(huán)11.7.3.repeat循環(huán)11.7.4.for循環(huán)

endl

十一、【Lua】

11.1.概念

Lua是一種輕量、小巧的腳本語言,用標準C語言編寫并以源代碼形式開發(fā)。 設計的目的是為了嵌入到其他應用程序中,從而為應用程序提供靈活的擴展和定制功能。

11.2.特性

跟其他語言進行比較,Lua有其自身的特點:

11.2.1.輕量級

Lua用標準C語言編寫并以源代碼形式開發(fā),編譯后僅僅一百余千字節(jié),可以很方便的嵌入到其他程序中。

11.2.2.可擴展

Lua提供非常豐富易于使用的擴展接口和機制,由宿主語言(通常是C或C++)提供功能,Lua可以使用它們,就像內(nèi)置的功能一樣。

11.2.3.支持面向過程編程和函數(shù)式編程

11.3.應用場景

Lua在不同的系統(tǒng)中得到大量應用,場景的應用場景如下:

游戲開發(fā)、獨立應用腳本、web應用腳本、擴展和數(shù)據(jù)庫插件、系統(tǒng)安全上。

11.4.Lua的安裝

在linux上安裝Lua非常簡單,只需要下載源碼包并在終端解壓、編譯即可使用。

Lua的官網(wǎng)地址為:https://www.lua.org

11.4.1. 點擊download可以找到對應版本的下載地址

使用wget命令直接下載:

mkdir -p /lua/core

cd /lua/core

wget https://www.lua.org/ftp/lua-5.4.6.tar.gz

tar -zxf lua-5.4.6.tar.gz

11.4.2. 編譯安裝

cd lua-5.4.6

# 測試當前Linux環(huán)境是否適合安裝lua

make linux test

make install

#卸載

#make uninstall

11.4.3.如果在執(zhí)行make linux test失敗,報如下錯誤:

說明當前系統(tǒng)缺少libreadline-dev依賴包,需要通過命令來進行安裝

yum install -y readline-devel

11.4.4.驗證是否安裝成功

lua -v

11.5.Lua的語法

Lua和C/C++語法非常相似,整體上比較清晰,簡潔。條件語句、循環(huán)語句、函數(shù)調(diào)用都與C/C++基本一致。

11.5.1.第一個Lua程序

Lua有兩種交互方式,分別是:交互式和腳本式

交互式之HELLOWORLD

交互式是指可以在命令行輸入程序,然后回車就可以看到運行的效果。

Lua交互式編程模式可以通過命令lua -i 或lua來啟用;在命令行中key輸入如下命令,并按回車,會有輸出在控制臺

腳本式之HELLOWORLD

腳本式是將代碼保存到一個以lua為擴展名的文件中并執(zhí)行的方式。

方式一:

我們需要一個文件名為 hello.lua,在文件中添加要執(zhí)行的代碼,然后通過命令 lua hello.lua來執(zhí)行,會在控制臺輸出對應的結(jié)果。

hello.lua

print("Hello World!!")

方式二:

將hello.lua做如下修改

#!/usr/local/bin/lua

print("Hello World!!!")

第一行用來指定Lua解釋器所在位置為 /usr/local/bin/lua,加上#號標記解釋器會忽略它。 一般情況下#!就是用來指定用哪個程序來運行本文件。 但是hello.lua并不是一個可執(zhí)行文件,需要通過chmod來設置可執(zhí)行權限,最簡單的方式為:

chmod 755 hello.lua

然后執(zhí)行該文件

./hello.lua

補充一點,如果想在交互式中運行腳本式的hello.lua中的內(nèi)容,我們可以使用一個dofile函數(shù),如:

dofile("lua_demo/hello.lua")

注意:在Lua語言中,連續(xù)語句之間的分隔符并不是必須的,也就是說后面不需要加分號,當然加上也不會報錯,

在Lua語言中,表達式之間的換行也起不到任何作用。如以下四個寫法,其實都是等效的

寫法一

a=1

b=a+2

寫法二

a=1;

b=a+2;

寫法三

a=1; b=a+2;

寫法四

a=1 b=a+2

不建議使用第四種方式,可讀性太差。

11.5.2.Lua的注釋

關于Lua的注釋要分兩種,第一種是單行注釋,第二種是多行注釋。

單行注釋的語法為:

--注釋內(nèi)容

多行注釋的語法為:

--[[

注釋內(nèi)容

注釋內(nèi)容

--]]

如果想取消多行注釋,只需要在第一個–之前在加一個-即可,如:

---[[

注釋內(nèi)容

注釋內(nèi)容

--]]

11.5.3.標識符

換句話說標識符就是我們的變量名,Lua定義變量名以一個字母 A 到 Z 或 a 到 z 或下劃線 _ 開頭后加上0個或多個字母,下劃線,數(shù)字(0到9)。這塊建議大家最好不要使用下劃線加大寫字母的標識符,因為Lua的保留字也是這樣定義的,容易發(fā)生沖突。注意Lua是區(qū)分大小寫字母的。

A0

11.5.4.關鍵字

下列是Lua的關鍵字,大家在定義常量、變量或其他用戶自定義標識符都要避免使用以下這些關鍵字:

andbreakdoelseelseifendfalseforfunctionifinlocalnilnotorrepeatreturnthentrueuntilwhilegoto

一般約定,以下劃線開頭連接一串大寫字母的名字(比如 _VERSION)被保留用于 Lua 內(nèi)部全局變量。這個也是上面我們不建議這么定義標識符的原因。

11.5.5.運算符

Lua中支持的運算符有算術運算符、關系運算符、邏輯運算符、其他運算符。

算術運算符:

+ 加法

- 減法

* 乘法

/ 除法

% 取余

^ 乘冪

- 負號

例如:

10+20 -->30

20-10 -->10

10*20 -->200

20/10 -->2

3%2 -->1

10^2 -->100

-10 -->-10

關系運算符

== 等于

~= 不等于

>大于

< 小于

>= 大于等于

<= 小于等于

例如:

10==10 -->true

10~=10 -->false

20>10 -->true

20<10 -->false

20>=10 -->true

20<=10 -->false

邏輯運算符

and 邏輯與 A and B &&

or 邏輯或 A or B ||

not 邏輯非 取反,如果為true,則返回false !

邏輯運算符可以作為if的判斷條件,返回的結(jié)果如下:

A = true

B = true

A and B -->true

A or B -->true

not A -->false

A = true

B = false

A and B -->false

A or B -->true

not A -->false

A = false

B = true

A and B -->false

A or B -->true

not A -->true

其他運算符

.. 連接兩個字符串

# 一元預算法,返回字符串或表的長度

例如:

> "HELLO ".."WORLD" -->HELLO WORLD

> #"HELLO" -->5

11.5.6.全局變量&局部變量

在Lua語言中,全局變量無須聲明即可使用。在默認情況下,變量總是認為是全局的,如果未提前賦值,默認為nil: 要想聲明一個局部變量,需要使用local來聲明

11.6.Lua數(shù)據(jù)類型

11.6.1.Lua有8個數(shù)據(jù)類型

nil(空,無效值)

boolean(布爾,true/false)

number(數(shù)值)

string(字符串)

function(函數(shù))

table(表)

thread(線程)

userdata(用戶數(shù)據(jù))

可以使用type函數(shù)測試給定變量或者的類型:

print(type(nil)) -->nil

print(type(true)) --> boolean

print(type(1.1*1.1)) --> number

print(type("Hello world")) --> string

print(type(io.stdin)) -->userdata

print(type(print)) --> function

print(type(type)) -->function

print(type{}) -->table

print(type(type(X))) --> string

11.6.2.nil

nil是一種只有一個nil值的類型,它的作用可以用來與其他所有值進行區(qū)分,也可以當想要移除一個變量時,只需要將該變量名賦值為nil,垃圾回收就會會釋放該變量所占用的內(nèi)存。

11.6.3.boolean

boolean類型具有兩個值,true和false。boolean類型一般被用來做條件判斷的真與假。在Lua語言中,只會將false和nil視為假,其他的都視為真,特別是在條件檢測中0和空字符串都會認為是真,這個和我們熟悉的大多數(shù)語言不太一樣。

11.6.4.number

在Lua5.3版本開始,Lua語言為數(shù)值格式提供了兩種選擇:integer(整型)和float(雙精度浮點型)[和其他語言不太一樣,float不代表單精度類型]。

數(shù)值常量的表示方式:

>4 -->4

>0.4 -->0.4

>4.75e-3 -->0.00475

>4.75e3 -->4750

不管是整型還是雙精度浮點型,使用type()函數(shù)來取其類型,都會返回的是number

>type(3) -->number

>type(3.3) -->number

所以它們之間是可以相互轉(zhuǎn)換的,同時,具有相同算術值的整型值和浮點型值在Lua語言中是相等的

11.6.5.string

Lua語言中的字符串即可以表示單個字符,也可以表示一整本書籍。在Lua語言中,操作100K或者1M個字母組成的字符串的程序很常見。

可以使用單引號或雙引號來聲明字符串

>a = "hello"

>b = 'world'

>print(a) -->hello

>print(b) -->world

如果聲明的字符串比較長或者有多行,則可以使用如下方式進行聲明

html = [[

Lua-string

Lua

]]

11.6.6.table

? table是Lua語言中最主要和強大的數(shù)據(jù)結(jié)構(gòu)。使用表, Lua 語言可以以一種簡單、統(tǒng)一且高效的方式表示數(shù)組、集合、記錄和其他很多數(shù)據(jù)結(jié)構(gòu)。 Lua語言中的表本質(zhì)上是一種輔助數(shù)組。這種數(shù)組比Java中的數(shù)組更加靈活,可以使用數(shù)值做索引,也可以使用字符串或其他任意類型的值作索引(除nil外)。

創(chuàng)建表的最簡單方式:

> a = {}

創(chuàng)建數(shù)組:

? 我們都知道數(shù)組就是相同數(shù)據(jù)類型的元素按照一定順序排列的集合,那么使用table如何創(chuàng)建一個數(shù)組呢?

>arr = {"TOM","JERRY","ROSE"}

? 要想獲取數(shù)組中的值,我們可以通過如下內(nèi)容來獲取:

print(arr[0]) nil

print(arr[1]) TOM

print(arr[2]) JERRY

print(arr[3]) ROSE

? 從上面的結(jié)果可以看出來,數(shù)組的下標默認是從1開始的。所以上述創(chuàng)建數(shù)組,也可以通過如下方式來創(chuàng)建

>arr = {}

>arr[1] = "TOM"

>arr[2] = "JERRY"

>arr[3] = "ROSE"

上面我們說過了,表的索引即可以是數(shù)字,也可以是字符串等其他的內(nèi)容,所以我們也可以將索引更改為字符串來創(chuàng)建

>arr = {}

>arr["X"] = 10

>arr["Y"] = 20

>arr["Z"] = 30

當然,如果想要獲取這些數(shù)組中的值,可以使用下面的方式

方式一

>print(arr["X"])

>print(arr["Y"])

>print(arr["Z"])

方式二

>print(arr.X)

>print(arr.Y)

>print(arr.Z)

當前table的靈活不進于此,還有更靈活的聲明方式

>arr = {"TOM",X=10,"JERRY",Y=20,"ROSE",Z=30}

如何獲取上面的值?

TOM : arr[1]

10 : arr["X"] | arr.X

JERRY: arr[2]

20 : arr["Y"] | arr.Y

ROESE: arr[3]

11.6.7.function

在 Lua語言中,函數(shù)( Function )是對語句和表達式進行抽象的主要方式。

定義函數(shù)的語法為:

function functionName(params)

end

函數(shù)被調(diào)用的時候,傳入的參數(shù)個數(shù)與定義函數(shù)時使用的參數(shù)個數(shù)不一致的時候,Lua 語言會通過 拋棄多余參數(shù)和將不足的參數(shù)設為 nil 的方式來調(diào)整參數(shù)的個數(shù)。

function f(a,b)

print(a,b)

end

f() --> nil nil

f(2) --> 2 nil

f(2,6) --> 2 6

f(2.6.8) --> 2 6 (8被丟棄)

可變長參數(shù)函數(shù)

function add(...)

a,b,c=...

print(a)

print(b)

print(c)

end

add(1,2,3) --> 1 2 3

函數(shù)返回值可以有多個,這點和Java不太一樣

function f(a,b)

return a,b

end

x,y=f(11,22) --> x=11,y=22

11.6.8.thread

thread翻譯過來是線程的意思,在Lua中,thread用來表示執(zhí)行的獨立線路,用來執(zhí)行協(xié)同程序。

11.6.9.userdata

userdata是一種用戶自定義數(shù)據(jù),用于表示一種由應用程序或C/C++語言庫所創(chuàng)建的類型。

11.7.Lua控制結(jié)構(gòu)

Lua 語言提供了一組精簡且常用的控制結(jié)構(gòu),包括用于條件執(zhí)行的證 以及用于循環(huán)的 while、 repeat 和 for。 所有的控制結(jié)構(gòu)語法上都有一個顯式的終結(jié)符: end 用于終結(jié) if、 for 及 while 結(jié)構(gòu), until 用于終結(jié) repeat 結(jié)構(gòu)。

11.7.1.if then elseif else

if語句先測試其條件,并根據(jù)條件是否滿足執(zhí)行相應的 then 部分或 else 部分。 else 部分 是可選的。

function testif(a)

if a>0 then

print("a是正數(shù)")

end

end

function testif(a)

if a>0 then

print("a是正數(shù)")

else

print("a是負數(shù)")

end

end

如果要編寫嵌套的 if 語句,可以使用 elseif。 它類似于在 else 后面緊跟一個if。根據(jù)傳入的年齡返回不同的結(jié)果,如

age<=18 青少年,

age>18 , age <=45 青年

age>45 , age<=60 中年人

age>60 老年人

function show(age)

if age <= 18 then return "青少年"

elseif age > 18 and age <= 45 then return "青年"

elseif age > 45 and age <= 60 then return "中年人"

else return "老年人"

end

end

11.7.2.while循環(huán)

顧名思義,當條件為真時 while 循環(huán)會重復執(zhí)行其循環(huán)體。 Lua 語言先測試 while 語句 的條件,若條件為假則循環(huán)結(jié)束;否則, Lua 會執(zhí)行循環(huán)體并不斷地重復這個過程。

語法:

while 條件 do

循環(huán)體

end

例子:實現(xiàn)數(shù)組的循環(huán)

function testWhile()

local i = 1

while i<=10 do

print(i)

i=i+1

end

end

11.7.3.repeat循環(huán)

repeat-until語句會重復執(zhí)行其循環(huán)體直到條件為真時結(jié)束。 由于條件測試在循環(huán)體之后執(zhí)行,所以循環(huán)體至少會執(zhí)行一次。

語法

repeat

循環(huán)體

until 條件

function testRepeat()

local i = 10

repeat

print(i)

i=i-1

until i < 1

end

11.7.4.for循環(huán)

數(shù)值型for循環(huán)

語法

for param=exp1,exp2,exp3 do

循環(huán)體

end

param的值從exp1變化到exp2之前的每次循環(huán)會執(zhí)行 循環(huán)體,并在每次循環(huán)結(jié)束后將步長(step)exp3增加到param上。exp3可選,如果不設置默認為1

for i = 1,100,10 do

print(i)

end

泛型for循環(huán)

泛型for循環(huán)通過一個迭代器函數(shù)來遍歷所有值,類似于java中的foreach語句。

語法

for i,v in ipairs(x) do

循環(huán)體

end

i是數(shù)組索引值,v是對應索引的數(shù)組元素值,ipairs是Lua提供的一個迭代器函數(shù),用來迭代數(shù)組,x是要遍歷的數(shù)組。

例如:

arr = {"TOME","JERRY","ROWS","LUCY"}

for i,v in ipairs(arr) do

print(i,v)

end

上述實例輸出的結(jié)果為

1 TOM

2 JERRY

3 ROWS

4 LUCY

但是如果將arr的值進行修改為

arr = {"TOME","JERRY","ROWS",x="JACK","LUCY"}

同樣的代碼在執(zhí)行的時候,就只能看到和之前一樣的結(jié)果,而其中的x為JACK就無法遍歷出來,缺失了數(shù)據(jù),如果解決呢?

我們可以將迭代器函數(shù)變成pairs,如

for i,v in pairs(arr) do

print(i,v)

end

上述實例就輸出的結(jié)果為

1 TOM

2 JERRY

3 ROWS

4 LUCY

x JACK

endl

柚子快報激活碼778899分享:Lua腳本

http://yzkb.51969.com/

精彩內(nèi)容

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。

轉(zhuǎn)載請注明,如有侵權,聯(lián)系刪除。

本文鏈接:http://m.gantiao.com.cn/post/19601646.html

發(fā)布評論

您暫未設置收款碼

請在主題配置——文章設置里上傳

掃描二維碼手機訪問

文章目錄