Lua 一些常用方法的區別

2021-07-25 21:01:26 字數 1969 閱讀 8731

a=;

for k,v in

ipairs(a) do

print(k,v);

endprint("--------------")

for k,v in

pairs(a) do

print(k,v)

end

1   a

2 b

3 c

4 d

5 e

--------------

2 b

3 c

1 a

4 d

5 e

window =     

setmetatable(window, window);

--對不存在的key進行獲取時,就會觸發__index

window.__index = function

(t, k)

return

1000; end

--對不存在的key進行賦值時,就會觸發__newindex

window.__newindex = function

(t, k, v)

print("no!") end

----rawget

print(window.a);--1000,因為使用了__index

print(rawget(window, a));--nil

--rawset

window.b = 1;--no!

print(window.b);--1000

rawset(window, "b", 500);

print(window.b);--500

window.__newindex = function

(t, k, v)

rawset(window, k, v); end

mytable = setmetatable(, )

mytable.key1 = "new value"

mytable.key2 = 4

print(mytable.key1,mytable.key2) -->new value "4"

function

a(i)

print(i);

endfunction

b(i)

print(i);

error("a error!!");

end--pcall,第乙個是函式,然後是該函式的引數

--true表示執行後沒錯誤,否則有錯誤

print(pcall(a,33));--33 true

print(pcall(b,34));--34 false

------------------------------------------

print("-----------");

functionc()

print("進行錯誤處理");

end--xpcall,第乙個是函式,然後是錯誤處理函式

xpcall(a,c);--nil

xpcall(b,c);--nil 進行錯誤處理

--assert

local

function

add(a,b)

assert(type(a) == "number", "a 不是乙個數字")

assert(type(b) == "number", "b 不是乙個數字")

return a+b

endadd(10)

--error

error (message [, level])

lua常用一些功能

lua在openresty中獲取請求的請求頭 local head table ngx.req.get headers 由於table型別,無法直接使用ngx.say 顯示,需要轉換為cjson local cjson require cjson local tab list cjson.encod...

CString的一些常用方法

cstringleft int ncount const 從左邊1開始獲取前ncount 個字元 cstringmid int nfirst const 從左邊第ncount 1 個字元開始,獲取後面所有的字元 cstringmid int nfirst,int ncount const 從左邊第n...

NSString的一些常用方法

nsstring 方法名名詞開頭的不會改變當前物件的內容,動詞開頭會改變物件的內容 把字串str通過字符集 分割 nsstring str aaaa a a s d sd.exe nsarray arr str componentsseparatedbycharactersinset nschara...