lua學習筆記之基本文法

來源:互聯網
上載者:User

標籤:lua

Lua學習筆記之基本文法

1、  賦值語句

賦值是改變一個變數的值和改變表域的最基本的方法。

a = “hello”..”world”

t.n = t.n+1

lua可以對多個變數同時賦值,變數列表和值列表的各個元素用逗號分開,賦值語句右邊的值會一次賦給左邊的變數。

a,b = 10,2*x    <-->a = 10;b = 2*x

遇到賦值語句lua會先計算右邊所有的值然後再執行賦值操縱,所以我們可以這樣進行交換變數的值:

x,y = y,x     --swap ’x’for ‘y’

a[i],a[j] =a[j],a[i]  --swap ‘a[i]’ for ‘a[j]’

當變數個數和值個數不一致時,lua會一直以變數個數為基礎採用以下策略:

a.變數個數>值個數                   按變數個數補足nil

b.變數個數<值個數                   多餘的值會被忽略

例如:

a,b,c = 0,1

print(a,b,c)        -->0 1 nil

a,b=a+1,b+1,b+2     -->value of b+2 is ignored

print(a,b)          -->1 2

a,b,c = 0

print(a,b,c)        -->0 nil nil

如果要對多個變數賦值必須一次對每一個變數賦值。

a,b,c = 0,0,0

print(a,b,c)   -->0 0 0

多值賦值常用來交換變數,或者函數調用返回給變數:

a,b = f()

f()返回兩個值,第一個賦給a,第二個賦給b

2、  局部變數與代碼塊(block)

使用local建立一個局部變數,與全域變數不同,局部變數只在被聲明的那個代碼塊內有效。代碼塊:指一個控制結構體內,一個函數體,或者一個chunk(變數被聲明的那個檔案或者文本串)

x = 10

local i = 1

while i<=x do

local x = i*2

print(x)

i = i+1

end

if i>20 then

local x

x = 20

print(x+20)

else

print(x)

end

print(x)

使用局部變數的好處:

①   免命名衝突

②   訪問局部變數的速度比全域變數更快

3、  控制結構

控制結構的運算式結果可以是任何值,lua認為false和nil為假,其他都是真。

if語句,有三種形式:

if conditions then

then – part

end

if conditions then

then-part

else

else – part

end

if conditions then

then – part

else if conditionsthen

else if –part

..               -->多個else if

else

else – part

end

while語句:

while conditions do

statements

end

repaeat_until語句:

repeat

statements

untitl conditions

for 語句有兩個大類:

第一、     數值for迴圈:

for var = exp1,exp2,exp3 do

loop-part

end

for將用exp3作為step從exp1(初始值)到exp2(終止值),執行loop-part。其中exp3可以省略,預設step = 1

三個運算式只會被計算一次,並且是在迴圈開始前。

for i = 1,f(x) do

print(i)

end

for i = 10,1,-1 do

print(i)

end

上面的第一個例子f(x)只會在迴圈前被調用一次。

控制變數var 是局部變數自動被聲明,並且只在迴圈內有效。

for i=1,10 do

prin(i)

end

如果需要保留控制變數的值,需要在迴圈中將其儲存

Local found = nil

for i =1,a.n do

if a[i] == value then

found = i

break

end

end

print(found)

迴圈過程中不要改變控制變數的值,那樣做會是結果不可預知,如果要退出迴圈使用break語句。

範型for迴圈:

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

範型for遍曆迭代子函數返回的每一個值。

for k in paris(t) do print(k) end

範型for和數值for有兩點相同:

①   制變數是局部變數

②   不要修改控制變數的值

4、  break和return語句

break語句是用來退出當前迴圈(for,repeat,while)。在迴圈外面不可以使用。

return用來從函數返回結果,當一個函數自然結果尾會有一個預設的return。

Lua文法要求break和return只能出現在block的結尾一局(也就是說:作為chunk的最後一局,或者在end之前,或者else之前,或者until前)例如:

local  i =1

while a[i] = do

if a[i] == v thenbreak end

i = i+1

end

有時候為了調試或者其他目的需要在block的中間使用return或者break,可以顯示的使用do..end來實現:

function foo ()

return

do return end

…

end

 

lua學習筆記之基本文法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.