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,即該檔案內容會消失。若檔案不存...