婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Lua基礎教程之賦值語句、表達式、流程控制、函數學習筆記

Lua基礎教程之賦值語句、表達式、流程控制、函數學習筆記

熱門標簽:個人怎么在地圖標注需要的店鋪 清朝地圖標注哈爾濱 百度地圖標注早餐區域 武漢外呼防封系統多少錢 漳州智云呼電話機器人 地圖標注大廈 新岸線智能電銷機器人 怎么去除地圖標注 冀州市地圖標注

賦值語句

注釋,單行用(--)來表示;多行用(--[[ ... ]])來標示;
定義,lua中沒有定義(申明數據類型),它是通過賦值來確定其數據類型的。
賦值,是改變一個變量的值和改變表域的最基本的方法。 a = "hello" .. "world" 

Lua可以對多個變量同時賦值,變量列表和值列表的各個元素用逗號分開,賦值語句右邊的值會依次賦給左邊的變量。a, b = 10, 2*x --> a=10; b=2*x

遇到賦值語句Lua會先計算右邊所有的值然后再執行賦值操作,所以我們可以這樣進行交換變量的值:

復制代碼 代碼如下:

x, y = y, x  -- swap 'x' for 'y'
a[i], a[j] = a[j], a[i]  -- swap 'a[i]' for 'a[i]'

當變量個數和值的個數不一致時,Lua會一直以變量個數為基礎采取以下策略:

a. 變量個數>值的個數按變量個數補足nil ;b. 變量個數值的個數多余的值會被忽略
多值賦值經常用來交換變量,或將函數調用返回給變量: a, b = f() --f()返回兩個值,第一個賦給a,第二個賦給b。

表達式

表達式---是表達式就需要運算符。

1.算術運算符:+-*/^(加減乘除冪,二元運算符),-(負值,一元運算符);操作跟C++一樣
2.關系運算符:、>、=、>=、==、~=(不等于);這些操作符返回結果為false或者true;==和~=比較兩個值,如果兩個值類型不同,Lua認為兩者不同;nil只和自己相等。Lua通過引用比較tables、userdata、functions。也就是說當且僅當兩者表示同一個對象時相等。

復制代碼 代碼如下:

print((2 15))   --true
print(("1" == 1)) --false
print(("2" > "15")) --true
a={};a.x=1;a.y=0;
b={};b.x=1;b.y=0;
print((a ~= b)); --true
c = a;
print((a == c)); --true
--Lua比較數字按傳統的數字大小進行,比較字符串按字母的順序進行,但是字母順序依賴于本地環境。
--為了避免不一致的結果,混合比較數字和字符串,Lua會報錯,比如:2 "15"

3.邏輯運算符:and、or、not;邏輯運算符認為false和nil是假(false),其他為真,0也是true.
and和or的運算結果不是true和false,而是和它的兩個操作數相關。a and b -- 如果a為false,則返回a,否則返回b ;a or b -- 如果a為true,則返回a,否則返回b ;想想堆棧,若第一個變量就可以判斷出真假,就不需要判斷第二個變量了。

and的優先級比or高。

C語言中的三元運算符,a ? b : c  ==>>在Lua中可以這樣實現: (a and b) or c
not的結果一直返回false或者true

復制代碼 代碼如下:

print(not nil) --> true
print(not false) --> true
print(not 0) --> false
print(not not nil) --> false

4.連接運算符:.. (兩個點);如果操作數為數字,Lua將數字轉成字符串。

復制代碼 代碼如下:

print("Hello " .. "World") --> Hello World
print(0 .. 1) --> 01

流程控制

控制結構的條件表達式結果可以是任何值,Lua認為false和nil為假,其他值為真。
do..end(相當于c/c++的{})

if語句,有三種形式

復制代碼 代碼如下:

if conditions then
    then-part
end;
if conditions then
   then-part
else
   else-part
end;
if conditions then
   then-part
elseif conditions then
    elseif-part
   .. --->多個elseif
else
   else-part
end;

由于Lua不支持switch語句,所以這種一連串的if-else if代碼很常見的。

while語句

復制代碼 代碼如下:

while condition do
   statements;
end;

repeat-until語句

復制代碼 代碼如下:

repeat
  statements;
until conditions;

條件判斷是在循環體之后做的,因此循環體至少會執行一次。類似于C++中的,do..while()

for語句

數字型for(number for)

復制代碼 代碼如下:

for var=exp1,exp2,exp3 do
    loop-part
end
--for將用exp3作為step從exp1(初始值)到exp2(終止值),執行loop-part。其中exp3可以省略,默認step=1

泛型for(generic for),泛型for循環通過一個迭代器(iterator)函數類遍歷所有值。

復制代碼 代碼如下:

--打印數組a的所有值
for i,v in ipairs(a) do print(v) end

Lua的基礎庫提供了ipairs,這是一個用于遍歷數組的迭代器函數。在每次循環中,i會被賦予一個索引值,同時v被賦予一個對應該索引的數組元素值。

復制代碼 代碼如下:

再看一個遍歷表key的例子:
-- print all keys of table 't'
--for k in pairs(t) do print(k) end
 
days = {"Sunday", "Monday", "Tuesday", "Wednesday","Thursday", "Friday", "Saturday"}
revDays = {}
for i,v in pairs(days) do
revDays[v] = i  --revDays = {["Sunday"] = 1, ["Monday"] = 2,["Tuesday"] = 3, ["Wednesday"] = 4,["Thursday"] = 5, ["Friday"] = 6,["Saturday"] = 7}
end
--x = "Tuesday"
--print(revDays[x])--3

for k in pairs(days) do print(k) end --1234567
for k in pairs(revDays) do print(k) end

標準庫提供了幾種迭代器,包括用于迭代文件中每行的(io.lines)、迭代table元素的(pairs)、迭代數組元素的(ipairs)、迭代字符串中單詞的(string.gmatch)等。

break和return語句

函數

復制代碼 代碼如下:

function foo(a, b, c)
   local sum = a + b
   return sum, c --函數可以返回多個值
end
r1, r2 = foo(1, '123', 'hello') --平行賦值
print(r1, r2) --124 hello

函數定義:用關鍵字function定義函數,以關鍵字end結束
局部變量:用關鍵字local定義。如果沒有用local定義,即使在函數內部定義的變量也是全局變量!
函數可以返回多個值:return a, b, c, ...
平行賦值:a, b = c, d
全局變量:前面的代碼定義了三個全局變量:foo、r1和r2

您可能感興趣的文章:
  • Lua中基本的數據類型、表達式與流程控制語句講解
  • Lua中的控制結構(流程控制)簡明總結
  • Lua和C++的通信流程代碼實例
  • Lua和C++的通信流程分解
  • Lua中的變量和流控制入門學習
  • Lua表達式和控制結構學習筆記
  • Lua中的基本語法、控制語句總結
  • Lua流程控制語句if else的使用示例

標簽:儋州 金昌 德宏 宣城 臺灣 天門 濰坊 天門

巨人網絡通訊聲明:本文標題《Lua基礎教程之賦值語句、表達式、流程控制、函數學習筆記》,本文關鍵詞  Lua,基礎,教程,之,賦值,語句,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Lua基礎教程之賦值語句、表達式、流程控制、函數學習筆記》相關的同類信息!
  • 本頁收集關于Lua基礎教程之賦值語句、表達式、流程控制、函數學習筆記的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 黄梅县| 贺州市| 钟山县| 桐乡市| 英吉沙县| 民乐县| 吴川市| 陇南市| 延庆县| 陈巴尔虎旗| 青神县| 蓝山县| 惠来县| 南昌县| 岑巩县| 铁岭县| 沽源县| 黔南| 稻城县| 梁河县| 安达市| 南宫市| 嘉善县| 赤峰市| 会宁县| 鹿泉市| 营山县| 徐闻县| 河东区| 呈贡县| 温州市| 夏津县| 龙川县| 尤溪县| 开江县| 泰来县| 京山县| 天峨县| 海宁市| 洪泽县| 沭阳县|