NodeMcu開發(二)--lua指令碼語言快速入門
阿新 • • 發佈:2019-01-07
NodeMcu是已lua為指令碼語言開發的, 是不是聽到又要學語言了, 就抓狂了???? 不是的, 其實我感覺只要學好了一門語言, 其他語言就是類似的, 觸類旁通, 經過一個小時的學習後, 發現lua挺像python的, 少說廢話, 來點實際的
lua語言詳細教程參考網站: 菜鳥教程 網址:http://www.runoob.com/lua/lua-tutorial.html
lun快熟入門教程, 也是我看的教程, 是簡書上的:https://www.jianshu.com/p/5927eae240ba
做一回大自然的搬運工:
在lua中需要注意
不要在結尾使用 ; 陣列的第一個元素下標 是1不是0 ---------------------------------------------------------------------- 不等於 ~= 邏輯與 and 邏輯或 or 邏輯非 not --------------------------------------------------------------------- 註釋用 -- 空值 nil 連字元 .. 所有程式碼塊需要結束標誌 end -------------------------------------------------------------------- 不能使用 i++ i-- ++i --i
輸出語句
直接用print()
輸出
示例:
print("hello world!")
----輸出hello world!
print("5+3="..(5+3))
----輸出5+3=8
變數定義
在lua中,變數的宣告不需要宣告變數的型別,如下
示例:
i = 6-----宣告全域性變數
local i = 7-----宣告區域性變數
if語句
--if語句框架如下
if (布林表示式) then
--執行語句
end
--示例: i=6 if (i<7) then print("yes!") end --輸出yes!
if-else
--if-else語句框架如下
if (布林表示式) then
--執行語句
else
--執行語句
end
--示例:
i=9
if (i<5) then
print("yes!")
else
print("no!")
end
--輸出no!
elseif
--elseif框架如下
if (布林表示式) then
--執行語句
elseif (布林表示式) then
--執行語句
end
示例: i=7 if (i<5) then print("i<5") elseif (i>6) then print("i>6") end --輸出i>6
while迴圈
--while迴圈框架如下
while (布林表示式) do
--執行語句
end
示例:
i=5
while (i>0) do
print(i)
i=i-1
end
--輸出
5
4
3
2
1
for迴圈
--for迴圈框架如下
for var=exp1,exp2,exp3 do
--執行語句
end
---exp1為初始值;exp2為終值;exp3為遞增值,省略則預設為1
for i=1,5,1 do
print(i)
end
--輸出
1
2
3
4
5
function函式
--函式定義框架如下
function 函式名(引數1,引數2,引數3)
--執行語句
return 返回值1,返回值2,返回值3
end
--示例
function f(ex1,ex2)
ex1=ex1+1
ex2=ex2-1
return ex1,ex2
end
i,j=f(9,5)
print("i="..i)
print("j="..j)
--輸出
i=10
j=4
陣列
--陣列定義如下
array1 = {} --定義一個空陣列
array2 = {1,2,3,4,5,6} --定義一個賦初的值陣列
--示例
array = {1,2,3,4,5,6}
for i=1,6,1 do
print(array[i])
end
--輸出
1
2
3
4
5
6
table
--table的定義
table = {} --定義一個空table
table.name="kk" --給table設定一個屬性,key為name,value為“kk”
table.name=nil --刪除屬性
--示例
table = {}
table.name="xiaoming"
table.age=12
function table.chifan()
print("yes ,yes, yes ")
end
table.age=table.age+5
print(table.name)
print(table.age)
table.chifan()
--輸出
xiaoming
17
yes ,yes, yes
字串
--字串的定義有三種形式
a1 = 'asdf'--------單引號定義字串
a2 = "asdf"--------雙引號定義字串
a3 = [[asdf]]-------兩個中括號定義字串
--示例
a1 = 'as\ndf' --將\n變成回車
a2 = "as\ndf" --將\n變成回車
a3 = [[as\ndf]] --不會將\n變成回車
print("a1="..a1)
print("a2="..a2)
print("a3="..a3)
--輸出
a1=as
df
a2=as
df
a3=as\ndf
錯誤處理
pcall(function,x1,x2,x3)
第一個引數為一個函式的名字,注意沒有()
,後面的引數為需要給函式傳遞的引數;
函式的第一個返回值表示是否執行成功,成功為ture
,不成功為false
若所傳遞的函式也有返回值,則在pcall
返回的第二個值之後接收
function fun(x)
return 10/x
end
ok,y=pcall(fun,0)
if(ok) then
print("yes")
print(y)
print(ok)
else
print("no")
print(y)
print(ok)
end
--輸出
no
stdin:-1: divide by zero
false
字串常用函式
連線字串..
--示例
s1="asd"
s2="fgh"
s3=s1..s2
print(s3)
--輸出
asdfgh
計算字串長度string.len(str)
--示例
s1="asdfg"
print(string.len(s1))
--輸出
5
查詢字串string.find (str, substr, i ,j)
在str
中查詢substr
,查詢區間為str
的第i
到第j
個之間;找到就返回開始下標和結束下標,找不到返回nil
--示例
s1="asdfg"
i,j=string.find(s1,'df')
print("i="..i)
print("j="..j)
--輸出
i=3
j=4
提取字串string.sub(str,i,j)
提取字串str
中的第i
個字元和第j
個字元之間的所欲字元,包括i
和j
如果j
取-1則取到最後一個,取-2則取到倒數第二個,以此類推
--示例
s1="asdfghjkl"
print(string.sub(s1,2,6))
--輸出
sdfgh
按指定字元分割符串
輸入引數,字元和標誌,返回陣列
--示例
function split( str,reps )
local resultStrList = {}
string.gsub(str,'[^'..reps..']+',function ( w )
table.insert(resultStrList,w)
end)
return resultStrList
end
a=[[111,222,333,444]]
print(split(a,',')[1])