lua中的表示式中可以包含數字常量、字面字串、變數、一元和二元操作符及函式呼叫。還可以包括函式定義和table 構造式。
算術操作符
二元:+、-、*、/、^(指數)、%(取模,lua5.1新增)
一元:-(負號)
如:x^0.5 --x的平方根
x^(-1/3) --x立方根的倒數
取模操作是根據以下規則定義的:
a % b == a - floor(a / b) * b
對於整數來說,以上算式通常都是有意義的,計算結果的符號永遠與第二個引數相同。
對於實數而言,可能有其他用途。
例如:x % 1的結果就是x的小數部分
x - x % 1的結果就是x的整數部分
x - x % 0.01是x精確到小數點後兩位的結果
x = math.pi
print(x - x % 0.01) -->3.14
關係操作符
< 、>、<=、>=、==、~=
以上操作符的運算結果都是true或者false
nil只與其自身相等
對於table、userdata和函式,lua是作引用比較的。只有當它們引用同乙個物件時,才認為它們相等。
a = {}; a.x = 1; a.y = 0
b = {}; b.x = 1; b.y = 0
c = a
則:c == a,但是b ~= a
lua只能對兩個數字或兩個字串進行大小性比較
其他情況只能進行相等或不相等比較
邏輯操作符
and、or、not
所有邏輯操作只將nil和false視為假,其他情況全部為真
a and b ==a為假就返回a,否則返回b
a or b ==a為真就返回a,否則返回b
and和or都是使用「短路求值」,只會在 需要時才去評估第二個運算元
lua習慣寫法
x = x or v ==當x值為false時賦預設值
(a and b) or c ==等價與c語言中的條件表示式a?b:c,前提是b必須為真
字串連線(..操作符)
如果其中任意乙個運算元是數字的話,lua會將這個數字轉換成乙個字串:
print(0 .. 1) -->01
優先順序^ (右結合)
not # -(一元)
* / %
+ -.. (右結合)
< > <= >= ~= ==
and or
table構造式
構造式是用於建立和初始化table的表示式。這是lua特有的一種表示式,也是lua中最有用、最通用的機制之一。
最簡單構造式 {},用於建立乙個空table
days = ==days[1] = "sunday"
提供一種特殊語法來初始化記錄風格的table
a = == a = {}; a.x = 1; a.y = 2
將記錄風格的初始化和列表風格的初始化混合在乙個構造式中使用:
polyline = , ,
, ,}
print(polyline[2].x) -->1
print(polyline[4].x) -->5
更為通用的初始化格式,允許在方括號之間,顯示地用乙個表示式來初始化索引值:
opnames =
i = 20; s = "-"
a =
print(opnames[s]) -->"sub"
print(a[22]) -->"---"
無論列表風格還是記錄風格的初始化,其實都是這種通用語法的特例。
== ==
在最後乙個元素後面寫乙個逗號,是合法的,對於那些生成lua table的程式來說,就沒有必要將最後乙個元素做特殊處理了。
a =
還可以使用分號來代替逗號,通常會將分號用於分割構造式中不同成分,例如將列表部分和記錄部分明顯地區分開:
a =
Java 基礎篇 第三課 表示式 控制結構
這兩天再看敏捷開發流程,我這個算是敏捷部落格嗎?哈哈o o 1 package a.b 23 public class three 443 44static void controlstructure 4555 else if a 0 5659 else 6063 64 迴圈語句 65while a...
爬蟲第三課 正規表示式
正規表示式可以非常簡潔的表達一組很長字串的特徵,所以把正則表達說成一行勝千言。可以把一組字串的特徵或特點表達出來。比如說有一組字串 無窮多個以l開頭後面有乙個或無窮多個h字串。lh lhh lhhh lhhhhhhh 正規表示式 lh py 開頭,後續存在不多於10個字元,後續字元不能是 p 或 h...
python第三課答案 python第三課
字串操作 s alexwusir s1 s.capitalize 首字母大寫 print s1 全大寫,全小寫 s2 s.upper s21 s.lower print s2,s21 大小寫翻轉 s3 s.swapcase print s3 每個隔開 特殊字元或數字 的單詞首字母大寫 s alex ...