第三課 表示式

2021-07-25 06:33:00 字數 1948 閱讀 3559

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 ...