91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Lua(二)——表達式

發布時間:2020-07-16 21:52:37 來源:網絡 閱讀:2412 作者:細桶假狗屎 欄目:開發技術

Lua的表達式中可以包含數字常量、字面字符串、變量、一元和二元操作符及函數調用。表達式中還可以包括函數定義和table構造式。

1. 算數操作符

1.1 二元算數操作符
+   加
-   減
*   乘
/   除
^   指數
%   取模

加減乘除不必多說,與其他編程語言相同。在lua中可以用^計算指數:

print(4 ^ 2)  -- 16
print(4 ^ 1 / 2)  -- 2

%用于取模,和其他語言并沒有不同。在lua中可以使用如下方式決定保留幾位小數:

num = math.pi  -- 3.1415926535898
print(num - num % 1)  -- 3 整數部分
print(num - num % 0.01)  -- 3.14 保留兩位小數
print(num - num % 1e-N)  -- 保留N位小數,N為非負整數

以這種方式保留小數不會出現進位的情況(即“五入”)。在其他語言中也可以使用這種方式,只是由于單精度浮點數存在四舍五入的問題,可能會造成一些誤差。在JavaScriptpython中,

num = 3.1415926535898
// JavaScript
num.toFixed(N)  // 保留N位小數,N為非負整數,默認N=0,自動四舍五入
Math.round(num * 1e+N) / 1e+N  // 保留N位小數,N為非負整數,自動四舍五入

# python
round(num, N)  # 保留N位小數,N為非負整數,默認N=0,自動四舍五入
"%.Nf" % num  # 保留N位小數,N為非負整數,自動四舍五入

另外,在lua中沒有C/C++/Java/JavaScript/Python中的

+=
-=
*=
/+
%=

運算符,在編碼時需留意。

1.2 一元算數操作符
-   負號

2. 關系操作符

lua中有以下關系操作符,用來進行比較操作:

<   小于
>   大于
<=  小于等于
>=  大于等于
==  等于
~=  不等于

所有比較操作的結果都是true或false。需要注意以下幾點:

  1. 和其他大多數編程語言不同,不等于比較符為~=,而不是!=

  2. nil只與其自身相等;

  3. lua在比較操作時不會做自動轉型,類型不同的兩個值永遠不等。在遇到string和number比較時,lua會拋出錯誤;

  4. table/function/userdata三種類型是做引用比較的,即 a = {} a.x = 1 b = {} b.x = 1 print(a == b) -- false

3. 邏輯操作符

python完全相同,lua使用如下保留字作為邏輯操作符:

and 與
or  或
not 非

關于運算符要注意一下幾點:

  1. 在Lua(一)——類型與值我們就提到過,lua只將false和nil視為假,其他任何值包括0與空字符串都視為真;

  2. lua中的and/or為短路與和短路或,所謂短路,是指一旦邏輯判斷結果已定時不會繼續向后做判斷,這樣帶來的好處是在遇到type(v) == "table" and v.tag="h2"這樣的表達式時不會導致運行錯誤;

  3. python相同,lua中沒有C/Java/JavaScript中的三目運算符(max = a > b ? a : b),如想達到三目運算符的效果,通過如下方式實現即可:

# python
max = a if a > b else b

-- lua
max = (a > b) and a or b  -- 此情況下a必須為真,否則實現不了三目運算符的功能
if a > b then max = a else max = b end

4. 操作符優先級

這里我們沒有列出操作符的優先級,也不建議去刻意記憶該優先級,任何情況下都建議使用()解決優先級問題,既不會出錯,又能提高代碼的可讀性。

5. table構造式

同樣,在Lua(一)——類型與值我們就提到過lua中table類型的初始化及賦值方法,但初始化及賦值table遠不止一種方式,以下方式均是合法、正確的:

tableBlank = {}
tableBlank.hobbies = {"basketball", "ping-pong", "volleyball"}
tableBlank["school"] = "BIT"
tableBlank[-100] = -100  -- 這種方式可以使用負數/特殊符號作為key
tableBlank["+"] = "add"
print(tableBlank.hobbies[1])  -- basketball
print(tableBlank[-100])  -- -100
print(tableBlank["+"])  -- add

tableWeek = {"Sunday", "Monday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}
for i = 1, #tableWeek do
    print(tableWeek[i])
end
--[[
Sunday
Monday
...
Saturday
--]]

tableMixed = {name="Tom", sex="male", age=20, 176, 64.5, [0]="zero"}
print(tableMixed.name)  -- Tom
print(tableMixed.sex)  -- male
print(tableMixed[1])  -- 176
print(tableMixed[0])  -- zero

除了初始化及賦值,關于table還有兩個類似“語法糖”知識點:

  1. 在table構造式的最后一個元素后寫逗號是合法、正確的,如tableDot = {[1]="red", [2]="green",}。這對于要生成table的lua程序來說很靈活,無需區別對待最后一個元素;

  2. 在table構造式中可以使用;來代替,,兩者作用完全等同,如tableSymbol = {name="Lucy";sex="male",age=20}

和函數相關的內容我們放到之后的博客中進行講解,敬請關注。

完。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

陆良县| 武鸣县| 徐水县| 望城县| 兴安县| 高密市| 浠水县| 丰镇市| 苍梧县| 同德县| 玉山县| 海晏县| 朔州市| 腾冲县| 定边县| 阳曲县| 荔浦县| 万宁市| 左贡县| 宽甸| 平泉县| 双城市| 江山市| 井冈山市| 射洪县| 潮州市| 霍林郭勒市| 河西区| 聂荣县| 长宁区| 阿克| 沁阳市| 松溪县| 托里县| 施甸县| 丹东市| 资源县| 乌鲁木齐市| 武强县| 郸城县| 辉县市|