大部份基本的運算都有: +(加), -(減), *(乘), /(除), %(求餘), ^(指數)
沒什麼特別的,直接看範例:
print(17+2) --> 19 print(-17-2) --> -19 print(17*5) --> 85 print(17/3) --> 5.6666666666667 print(17%5) --> 2 print(17^2) --> 289 print(17^(-0.5)) --> 0.24253562503633, 相當於開根號
關係運算式 Relational Operators
有幾下幾種可用:
== ~= < <= > >=
==常常被用來檢查二變數或物件是否相同,
它會檢查型態,如果型態不同,直接回傳false,
如果型態相同,而來會比較值是否一樣,
換句話說,之前[Corona SDK] 基本型態和操作提到的string和number自動轉換在此不適用,
例如, 123 == "123"會回傳false,
另外table和function的比較則是用reference,不是用value,
例如以下範例,雖然兩個table內容一樣,但結果會是false
t1 = {my,"123"} t2 = {my,"123"} print(t1==t2) --> false另外,~=就是將==反過來
邏輯運算式 Logical Operators
or, 如果第一個參數不是false且不是nil, 即傳回第一個參數,不然就傳回第二參數,
and, 如果第一個參數是false或nil, 即傳回第一個參數,不然就傳回第二參數,
not, 回傳true或false
print(1 or 2) --> 1 print(nil or true) --> true print(false or nil) --> nil print(3 and 4) --> 4 print(not nil) --> true print(nil and "test") --> nil print(false and nil) --> false print(1 or 2 and 3) --> 1 print(nil or 2 and 3) --> 3 print(nil and 2 or 3) --> 3
字串相加 Concatenation
用".."即可將兩字串相加,
之前[Corona SDK] 基本型態和操作提到的string和number自動轉換在此也適用
print("a" .. "b") --> ab print("a" .. 2) --> a2 print(1 .. 2) --> 12
長度 Length Operator
在變數前面加#即可取得string或table的長度資訊
a = "hello" print(#a) --> 5 b = "哈囉你好" print(#b) --> 12 c = {} c[1] = "33" c["a"] = "55" c[2] = "33" print(#c) --> 2 d = {} d[0] = "33" d["a"] = "55" d[1] = "33" d[3] = "33" print(#d) --> 1 e = {} e[2] = "33" e["a"] = "55" e[3] = "33" print(#e) --> 0中文字每個字有3個bytes,
table型態的長度是取連續數字index的最後一個為長度,
但如果index 1的項目為nil,則長度為0
例如 c[1],c[2]的index連續,且c[1]不是nil,所以長度為最後一個index值2,
d[0],d[1],d[3]的index不連續,所以長度為連續的最後一個index值1,
e[2],e[3]雖然連續,但是e[1]是nil,所以長度是0
沒有留言:
張貼留言