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...