Lua語言學習之表示式和語句

2021-06-22 17:35:20 字數 2467 閱讀 3497

上次已經學習了lua的基本語法,今天開始學習表示式。

表示式用於表示值。lua的表示式中可以包含數字常量、字面字串、變數、一元和二元操作符及函式呼叫。另外,有別於傳統的是,表示式中還可以包括函式定義(匿名函式或閉包)和table構造式。

一、首先,熟悉一下各種操作符:

1.算術操作符:+、-、*、/、%、- (負號)和 ^ (指數), lua比其他語言多了乙個指數運算子,其他都一樣。

2.關係操作符:<   >  <=  >=  ==  ~=   , 和其他語言( != )不同的是不「不等於」。運算結果都是true或false。

3.邏輯操作符:and   or   not 。and和or都使用「短路求值(short-cut evaluation),也就是說,它們只會在需要時才去評估第二個操作符,而且它們的結果與其他語言截然不同:

and --> 如果它的第乙個運算元為假,就返回第乙個運算元,否則就返回第二個運算元;

or -----> 如果它的第乙個運算元為真,就返回第乙個運算元,否則就返回第二個運算元;

not相當於c中的非(!),結果是true或false。

注意:lua中的假只有2種-----> false 和 nil , 其他值都是真。其他語言一般有四大假:0,false,nul,『\0』。特別注意lua中的0是真,這點區別很大。

想一想:c語言中的三目運算子 ?: 怎麼表達 ?

還有乙個字串連線符 .. 前面已經接觸到了。

二、語句

和其他語言類似,無非是一些賦值語句,條件語句,迴圈語句等,這都很簡單,只是格式上有一些區別而已。

1. 賦值語句

賦值(assignment)的基本含義是修改乙個變數或者乙個table中字段的值,但是lua中的賦值有一些額外的不同:可以多重賦值,也就是一次將多個值賦給多個變數,各變數或值用逗號分隔。

a, b = 10, "hello"

a, b, c = 0, 1, 2

a, b, c = 0, 1    -----> c沒有賦值,c = nil

a, b = 0, 1, 2 -------> 2 沒有變數接收,被忽略

a, b = b, a   ------> 想想這是什麼意思 ?

2. if 條件選擇語句

注意格式:

if a < 0 then 

a = 0

end

巢狀的if語句:

if a and b then

print(a)

elseif  c and d then

print(c)

elseif e or f then

print(e)

else

print("nothing")

end

3.while 迴圈:先判斷條件,再執行迴圈體

local i = 1
while a[ i ]  do

print ( a[ i ] )

i = i + 1 ----> lua 中沒有++、-- 運算子

end

4.repeat-until 語句,一直執行迴圈體,直到條件滿足時結束

repeat
line = io.read()

until line ~= " "

print ( line )

5.for 迴圈語句,有兩種:數字型for(numeric for)和泛型for(generic for)

數字型for:

for var = start,end,step do

《迴圈體》

end泛型for:通過乙個迭代器(iterator)函式來遍歷所有值:

for i, v in ipairs( a ) do 

print( v ) 

endipairs是lua基礎庫中提供的用於遍歷陣列的迭代器函式,還有乙個迭代table元素的函式pairs。其實,陣列也是用table表示的:

a = {1,2,3,4,5,6,7}這就是陣列,用ipairs ( a ) 可以遍歷所有元素

b = { 「one」 = 「windows」,「two」 = 「 unix 」,「three」 = 「 mac 」 }這就是table,用pairs ( b ) 可以遍歷所有元素;

c =  {1,2,3,4,5,6,7,「one」 = 「windows」,「two」 = 「 unix 」,「three」 = 「 mac 」 }這是table,但其中有陣列元素,此時用pairs 和 ipairs 遍歷就不同了,如此一來就能區別兩者的不同之處。

6. break 和 return ,這兩個語句用於跳出當前的塊,比較簡單,不用多說了。

今天先到這裡,明天繼續。

C語言學習總結(五) 表示式和語句

表示式由運算子和運算物件組成,在c語言中每個表示式都有乙個值。c把末尾加上乙個分號的表示式都看作是一條語句。復合語句是用花括號括起來的一條或多條語句,復合語句也稱塊 block 涉及兩種型別的運算,兩個值會被分別轉換成兩種型別的更高階別。目標型別是無符號整型,且待賦的值是整數時,額外的位將被忽略。通...

lua學習之表示式

3.1 算術運算子 二元運算子 加減乘除冪 一元運算子 負值 這些運算子的運算元都是實數。3.2 關係運算子 如果兩個值d型別不同,則不等 lua通過引用比較tables,userdata,functions,也就是當且僅當表示同乙個物件時才相等。3.3 邏輯運算子 and or not a and...

Lua學習之 3 表示式

二元運算子 一元運算子 負值 運算元都是實數 操作返回false或true。和 比較兩個值,如果兩個值型別不同,這二者不同。nil只和自己相等。lua通過引用比較table userdata functions。即當且僅當兩者表示同乙個物件時相等。and or not。邏輯運算子認為false和ni...