lua學習記錄

2021-08-13 16:07:49 字數 1224 閱讀 1411

1.八種資料型別:number,string,boolean,nil,function,table,協程,自定義型別

空字串和數字0是真,false和nil為假

2.lua是動態語言,每個變數攜帶自己的型別,可以執行時型別轉換,print(type(my_var))得到型別

3.不格式化的字串:print([[aa]]);print([==[[a]]==]),注釋也可以用--[==[和--]==]

4.tonumber,tostring,#得到字串長度

5.理解陣列:a=

for i,v in pairs(a) do print(i,v) end

6.local foo1 = foo1 區域性變數拷貝自全域性變數

7.常用的控制流程:if_else_then,while_do_end,repeat_until,for_do_end

8.函式的引數如果是字串或者數字,圓括號可有可無

9.lua提供了冒號操作符模仿物件導向的呼叫:string.byte(data,i)等價於data:byte(i)前提是type(data)是string

這是lua提供的語法糖,function的寫法也是一種語法糖,使得**看起來像pascal

10.閉包的例子

function create(n)

local function foo1()

print(n)

endlocal function foo2()

n = n + 10

endreturn foo1,foo2

endf1,f2 = create(1979)

f1() -- 列印1979

f2()

f1() -- 列印1989

f2()

f1() -- 列印1999

上面**來自:

閉包:就是函式加上『區域性變數』的控制塊,理解區域性變數的生存週期;閉包可對應設計模式的工廠模式;

函式是編譯時(靜態),閉包是執行時(動態);物件是附有行為的資料,而閉包是附有資料的行為

11.當函式最後乙個動作是呼叫另外乙個函式時,我們稱這種呼叫尾呼叫,相當於goto所以不需要額外的堆疊空間

12.package.loadlib: 從dll或者so引用函式;lua-5.3去掉了package.seeall

13.require先從環境變數找*.lua,再找庫*.dll(或*.so),如果是庫就用package.loadlib載入

lua 學習記錄

由於ulua把所有lua檔案都dofile一次 所以,lua new proxy 和非new array 各自相通,方法等可以隨意呼叫 function test test是隨意呼叫 為了防止太隨意呼叫 1.array 2.test 3.class 4.module 5.local module 就...

學習LUA 零星記錄

悶頭看的東西不寫出來總感覺遲早要忘記,那就通過部落格的形式一點一點記錄下來吧,沒準回頭來看會有更多收穫。新工作的第一天就被告知要先維護乙個cgi,用lua寫的,lua是神馬,能吃嗎 摳鼻子。零零散散看了兩三天,今天終於有那麼一點點眉目了。首先,執行乙個lua檔案命令是 lua 檔名.lua 前面的l...

Lua語言物件導向學習記錄一

1 元表目的 對兩個table進行操作,從而改變table的行為 栗子 為了實現 使 表a和表b中元素互相加起來 lua先檢查任一表 是否有 元表 接著檢查是否有 add 字段 add為 即時字段 對應著乙個函式或者表,我們稱其對應的字段為元方法 鍵 處理 元表 的函式 1 setmetatable...