Lua初學習 9 12 基礎

2022-08-01 18:27:13 字數 3185 閱讀 2890

1:string 轉 number :tonumber(string)

2: number 轉 string :tostring(number)

3:string api:

lua中的字串是不可變值,a = "cocotang"  string.gsub(a,"c","z")  print(a) ----> cocotang

1獲得字串長度:string.len(string)  或者 #string

2拼接2個字串: string..string     &&    如果是2個number number .. number(空格不然誤認為小數點)

3擷取字串,組成新的字串:string.gsub(a,"cc","zz",index) a字串中的 cc 由 zz 代替 直到index位置

4查詢字串中的某字串位置:string.find(a,"coco") 返回2個值 c 的index 與 o的index

4:io.read() 獲取控制台輸入

5: table建立乙個list(陣列)

a={}

1:當key 賦值1-10時,len = 10

2:當key 賦值0-10時,len = 10 (同上)

lua中通常用 1 來做 index的初始值  (table.maxn(a))--->返回最大正索引 index

6:取精度 

x = 3.123456 print(x-x%0.001)   ---->3.123

x%1 結果是 x的小數部分 0.123456

x-x%1 結果是 x的整數部分 3   

x-x%0.001 結果是 x取小數點後三位

7:運算子

> < == >= <= 同於c#

~= 不等於(c# !=)

lua中取反 not(空格)   (c# !)

8:運算優先順序

基本同於c#,直接用括號顯示的表現優先順序 容易理解

-x^2  -------> -(x^2)

x^y^z --------->x^(y^z)

9:table構造式

a = 等價於a =  等價於 a = {} a["x"] =10 a["y"] =20  等價於 a = {} a.x= 10 a.y = 20

10:table裡面刪除乙個變數

a = {} a.x= 10  a.x= nil

11:交換變數(lua裡面有點特別) (多重賦值 調函式時傳入的實參多餘或者少於形參時,與多重賦值非常相似)

c#中:int a=1;int b=2; 交換: int c = a; a =b; b=c;

lua中:a = 1 b = 2  交換:a,b = b,a

a,b = 1,2,3 ---->捨棄3

a,b,c = 1,2  ----->c=nil

12:流程控制

1由於lua不支援switch語句,所以一連串的if elseif 是很常見的

2迴圈中用break可以跳出迴圈

13:lua中沒有 ++ --,並且 +=  -=也沒有    如果遞增1 a=a+1

14:lua中的foreach( generic for)

1遍歷所有k: a =

for k in pairs(a) do

print(k)  ------>  1 2 3 y x z

end2遍歷所有v:

for i , v in pairs(a) do

print(v)  -------> one two three 2 1 3

end2-2 遍歷所有的v         

for k in pairs(a) do

print(a[k])  ------>  1 2 3 y x z

end3遍歷陣列a的所有值

for i , v in ipairs(a) do

print(v)  ---------> one two three

end值得注意的是:遍歷陣列a中的值,ipairs(a) 輸出的並不是所有的value,以後慢慢了解

15:逆向table(反轉key value)

a =

b = {}

for k,v in pairs(a) do

b[v] = k

end16:break與return

break跳出迴圈,return跳出方法

注意:但是如果return在if前面  報錯

17:方法的呼叫

a = {}

function a:test() print("orz") end

第一種調:a:test()    第二種調:a.test() 注意第二種隱式的傳入了a  --->a.test(a)

假如 function有乙個引數,用第二種調 a.test(n) 報錯,應該---> a.test(a,n)

18:方法的返回值

function foo1() end 無返回值

function foo2() return 1 end 返回乙個值

function foo3() return 1,2 end 返回兩個值

x,y = foo3() ----> x =1, y = 2

x = foo3()  ------> x =1 ,  2被丟棄

x,y,z = foo3() ----->x=1,y=2,z=nil

x,y = foo3(),99  ----->x = 1,y = 99

x,y = foo1(),20,30 ---->x = nil , y =20    30被丟棄

注意:table 可以接受 函式返回的所有值,前提是函式作為table構造式中最後乙個引數,如果不是最後乙個引數,那麼只會取第乙個返回值,無返回值則為nil

如果強行讓函式返回第乙個值,可以用一對小括號 括起來函式 ---> (foo()) 不管foo有幾個返回值,都只返回第乙個,沒有返回nil

特殊內建函式 unpack:它接受乙個陣列作為引數,並從下標1開始返回該陣列的所有元素

例如:print(unpack())   ----> 1,2,3,4,5,66

19:算術類元方法

__add()   + 運算對應的元方法

__sub()   

__mul

__div

__mod

__pow

__unm     相反數

__concat  .. 運算對應的元方法

Lua基礎學習 Lua函式

函式主要用途 1 是作為呼叫語句使用。2 作為賦值語句的表示式使用。語法 區域性 全域性 function fun name 引數列表 函式體endfunction 定義函式關鍵字注意 1 在使用 lua 函式 變數時一定要先定義函式 變數 2 lua 函式不支援引數預設值,可以使用 or 解決。如...

Lua 初學 遍歷

value 1.遍歷的形式 for迴圈,利用 獲取長度的遍歷 for i,value doprint value i endipairs遍歷 for i,v,ipairs value do print i,v endpairs遍歷 for k,v,pairs value do print k,v e...

Lua基礎學習 五

簡單i o模型假設有乙個當前輸入檔案和乙個當前輸出檔案,它的i o操作均作用於這些檔案。開啟檔案操作語句 file io.open filename mode mode 的值有 模式描述 r以唯讀方式開啟檔案,該檔案必須存在。w開啟只寫檔案,若檔案存在則檔案長度清為0,即該檔案內容會消失。若檔案不存...