LUA腳本的好處是用戶可以根據自己註冊的一批API(當前TOOL已經提供了幾百個函數供大家使用),實現各種小程序,不再限制Flash裏面已經下載的程序,就跟手機安裝APP差不多,所以在H7-TOOL裏面被廣泛使用,支持在線調試運行,支持離線運行。
TOOL的LUA教程爭取做到大家可以無痛調用各種功能函數,不需要學習成本。
掌握這些基礎就夠用了。
一、註釋
註釋、多行註釋、取消多行註釋:
註釋單行
--local a = 1
註釋多行
--[[ local a = 1 --]]
取消註釋多行
---[[ local a = 1 --]]
二、變量:
變量
1.變量無需聲明
2.變量沒聲明爲nil,賦值爲nil等同於刪除
3.lua把nil,false視爲假,其他都爲true
4.Lua中的變量全是全局變量,除非用 local 顯式聲明爲局部變量
5.#ta字符串的長度,也可以獲取表格數字索引對應的個數
例子
--全局賦值 x = 1 --局部多個賦值 local x,y = 1,2 local ta = {1,2,3,name='安富萊'} --3 print(#ta)
三、條件:
條件
if
and or not
>= <= == > < ~=
例子
if (a >= 0) then --大於等於 b = b + 1 else b = b - 1 end if (a ~= 0) then --不等於 end if (a==b and c == 0) then --邏輯與 elseif (a~=b) then --不等於 elseif (not a) then --邏輯非 else end
四、循環
例子
local a=10 while (a < 20) do a = a + 1 print(a) end local t = {1,2,3} for i,v in pairs(t) do print(v) end
--每次加1
for i=0,5,1 do print(i) end
--每次減1
--5,4,3,2,1 for i=5,1,-1 do print(i) end
五、函數
例子:
--聲明函數,傳遞2個參數,返回2個值得和 function add(num1, num2) return num1 + num2 end
--把函數賦值給一個變量,然後可以當參數傳遞
local myprint = function(str) print(str) end function say(arg1,func) func(arg1) end --www.freecls.com say('www.freecls.com',myprint)
--可變參數
function average(...) result = 0 local arg={...} for i,v in ipairs(arg) do result = result + v end print("總共傳入 " .. #arg .. " 個數") return result/#arg end
function what() return '安富萊','www.armlfy.com' end --返回多個參數 local name,url = what() print(name,url)
六、常用字符串函數:
string.byte(s [, i [, j]])
string.byte是用來把字符轉換成ascii數字,s爲目標字符串,i爲索引開始位置(從1開始),j爲索引結束位置
例子
--默認爲第1個返回a的ascii值 local r = string.byte('abcdefg') --97 --從索引2(b)到索引4(d)也就是分別返回bcd的ascii值 local r1,r2,r3 = string.byte('abcdefg',2,4) --98,99,100
string.char(...)
string.char是把ascii數值轉換成字符
例子
--返回98所對應的字符 local r = string.char(98) --a --返回98,,99,100對應的字符並連在一起返回 local r = string.char(98,99,100) --abc
string.sub (s, i [, j])
截取字符串(字符串分割,字符串截取),i爲起始索引,可選參數j爲結束索引(包含),都可以爲負數,第一個字符索引爲1,最後一個字符爲-1
例子
local res,s s = 'www.armfly.com' res = string.sub(s,5) --armfly.com res = string.sub(s,5,-1) --armfly.com --截取後3位 res = string.sub(s,-3) --com --截取前3位 res = string.sub(s,1,3) --www
string.find (s, pattern [, init [, plain]])
字符串查找函數找不到返回nil,找到了返回開始位置和結束位置,init爲從哪裏開始默認爲1,plain默認爲false表示利用模式匹配,如果設爲true則表示純文本匹配(也就是關閉正則匹配)
例子
local str = 'i love programming,11,22,%d+aa' local s = string.find(str,'222') --nil s = string.find(str,'pro') --8 s = string.find(str,",%d+") --19(匹配到了,11) s = string.find(str,",%d+",1,true) --25(由於關閉了模式匹配,所以匹配到了,%d+)
string.match (s, pattern [, init])
它跟string.find差不多,只不過能把捕獲匹配到的結果並返回
例子
local s,res,res1,res2 s = 'http://www.armfly.com' --由於沒有捕獲,返回全部匹配 --結果:http://www.armfly.com res = string.match(s,'http://%a+.%a+.com') --如果有捕獲,則分別返回捕獲結果 --結果:www armfly res1,res2 = string.match(s,'http://(%a+).(%a+).com')
string.gsub (s, pattern, repl [, n])
用來做字符串替換,可選參數n代表替換多少次默認全部替換,返回替換後的字符串,也可以指定第二個返回值爲替換的次數。
例子
local s,res,res1,res2 s = 'http://www.armfly.com' --結果:http://test.armfly.com,1 res,count = string.gsub(s,'www','test') --捕獲替換 --結果:test.freecls.abc res = string.gsub(s,'^http://%w+.(%w+).com$','test.%1.abc') --w替換成t,但是隻替換2次 --結果:http://ttw.armfly.com res = string.gsub(s,'w','t',2)
string.format (formatstring, ···)
字符串格式化類型c語言的sprintf不說廢話以例子來講解
local s = string.format('%d%s',123,'armfly') --123armlfy s = string.format('%0.2f',1.234343) --1.23(保留2位) --轉成16進制,%X爲大寫的16進制 local s = string.format('%X',140) --8C local s = string.format('%x',140) --8c local s = string.format('%04x',140) --008c
string.len(s)
返回字符串長度=#s
string.rep(s,n)
字符串重複n次並拼接返回
string.lower(s)
轉小寫
string.upper(s)
轉大寫
string.reverse(s)
反轉字符串