青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

每天早晨叫醒你的不是鬧鐘,而是夢想

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  62 Posts :: 0 Stories :: 5 Comments :: 0 Trackbacks

常用鏈接

留言簿(1)

我參與的團隊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

一、表達式:

    1. 算術操作符:
    Lua支持常規算術操作符有:二元的“+”、“-”、“*”、“/”、“^”(指數)、“%”(取模),一元的“-”(負號)。所有這些操作符都可用于實數。然而需要特別說明的是取模操作符(%),Lua中對該操作符的定義為:
    a % b == a - floor(a / b) * b
    由此可以推演出x % 1的結果為x的小數部分,而x - x % 1的結果則為x的整數部分。類似的,x - x % 0.01則是x精確到小數點后兩位的結果。
    
    2. 關系操作符:
    Lua支持的關系操作符有:>、<、>=、<=、==、~=,所有這些操作符的結果均為true或false。
    操作符==用于相等性測試,操作符~=用于不等性測試。這兩個操作符可以應用于任意兩個值。如果兩個值的類型不同,Lua就認為他們不等。nil值與其自身相等。對于table、userdata和函數,Lua是通過引用進行比較的。也就是說,只有當他們引用同一個對象時,才視為相等。如:

復制代碼
1 a = {}
2 a.x = 1
3 a.y = 0
4 b = {}
5 b.x = 1
6 b.y = 1
7 c = a
復制代碼

    其結果是a == c,但a ~= b。
    對于字符串的比較,Lua是按照字符次序比較的。
    
    3. 邏輯操作符:
    Lua支持的邏輯操作符有:and、or和not。與條件控制語句一樣,所有的邏輯操作符都將false和nil視為假,其他的結果均為真。和其他大多數語言一樣,Lua中的and和or都使用“短路原則”。在Lua中有一種慣用寫法"x = x or v",它等價于:if not x then x = v end。這里還有一種基于“短路原則”的慣用寫法,如:
    max = (x > y) and x or y
    這等價于C語言中max = (x > y) ? x : y。由于x和y均為數值,因此它們的結果將始終為true。
    
    4. 字符串連接:
    前一篇Blog已經提到了字符串連接操作符(..),這里再給出一些簡單的示例。
    /> lua
    > print("Hello " .. "World)
    Hello World
    > print(0 .. 1)  --即使連接操作符的操作數為數值類型,在執行時Lua仍會將其自動轉換為字符串。
    01

    5. table構造器:
    構造器用于構建和初始化table的表達式。這是Lua特有的表達式,也是Lua中最有用、最通用的機制之一。其中最簡單的構造器是空構造器{},用于創建空table。我們通過構造器還可以初始化數組,如:

復制代碼
 1 days = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"}
2 for i = 1,#days do
3 print(days[i])
4 end
5 --輸出結果為
6 --Sunday
7 --Monday
8 --Tuesday
9 --Wednesday
10 --Thursday
11 --Friday
12 --Saturday
復制代碼

    從輸出結果可以看出,days在構造后會將自動初始化,其中days[1]被初始化為"Sunday",days[2]為"Monday",以此類推。
    Lua中還提供了另外一種特殊的語法用于初始化記錄風格的table。如:a = { x = 10, y = 20 },其等價于:a = {}; a.x = 10; a.y = 20
    在實際編程時我們也可以將這兩種初始化方式組合在一起使用,如:

復制代碼
polyline = {color = "blue", thickness = 2, npoints = 4, 
{x = 0, y = 0},
{x = 10, y = 0},
{x = -10, y = 1},
{x = 0, y = 1} }
print(polyline["color"]);
print(polyline[2].x)
print(polyline[4].y)
--輸出結果如下:
--
blue
--
10
--
1
復制代碼

    除了以上兩種構造初始化方式之外,Lua還提供另外一種更為通用的方式,如:

1 opnames = { ["+"] = "add", ["-"] = "sub", ["*"] = "mul", ["/"] = "div"}
2 print(opnames["+"])
3 i = 20; s = "-"
4 a = { [i + 0] = s, [i + 1] = s .. s, [i + 2] = s..s..s }
5 print(a[22])

    對于table的構造器,還有兩個需要了解的語法規則,如:
    a = { [1] = "red", [2] = "green", [3] = "blue", }  
    這里需要注意最后一個元素的后面仍然可以保留逗號(,),這一點類似于C語言中的枚舉。
    a = {x = 10, y = 45; "one", "two", "three" }
    可以看到上面的聲明中同時存在逗號(,)和分號(;)兩種元素分隔符,這種寫法在Lua中是允許的。我們通常會將分號(;)用于分隔不同初始化類型的元素,如上例中分號之前的初始化方式為記錄初始化方式,而后面則是數組初始化方式。

二、語句:

    1. 賦值語句:
    Lua中的賦值語句和其它編程語言基本相同,唯一的差別是Lua支持“多重賦值”,如:a, b = 10, 2 * x,其等價于a = 10; b = 2 * x。然而需要說明的是,Lua在賦值之前需要先計算等號右邊的表達式,在每一個表達式都得到結果之后再進行賦值。因此,我們可以這樣寫變量交互:x,y = y,x。如果等號右側的表達式數量少于左側變量的數量,Lua會將左側多出的變量的值置為nil,如果相反,Lua將忽略右側多出的表達式。

    2. 局部變量與塊:
    Lua中的局部變量定義語法為:local i = 1,其中local關鍵字表示該變量為局部變量。和全局變量不同的是,局部變量的作用范圍僅限于其所在的程序塊。Lua中的程序可以為控制結構的執行體、函數執行體或者是一個程序塊,如:
    下面的x變量僅在while循環內有效。

1 while i <= x do
2 local x = i * 2
3 print(x)
4 i = i + 1
5 end

    如果是在交互模式下,當執行local x = 0之后,該變量x所在的程序即以結束,后面的Lua語句將被視為新的程序塊。如果想避免此類問題,我們可以顯式的聲明程序塊,這樣即便是在交互模式下,局部變量仍然能保持其塊內有效性,如:

1 do
2 local a2 = 2 * a
3 local d = (b ^ 2 - 4 * a) ^ (1 / 2)
4 x1 = (-b + d) / a2
5 x2 = (-b - d) / a2
6 end --a2和d的作用域至此結束。

    和其它編程語言一樣,如果有可能盡量使用局部變量,以免造成全局環境的變量名污染。同時由于局部變量的有效期更短,這樣垃圾收集器可以及時對其進行清理,從而得到更多的可用內存。    

    3. 控制結構:
    Lua中提供的控制語句和其它大多數開發語言所提供的基本相同,因此這里僅僅是進行簡單的列舉。然后再給出差異部分的詳細介紹。如:
    1). if then else
    if a < 0 then 
        b = 0
    else
        b = 1
    end
    
    2). if elseif else then
    if a < 0 then 
        b = 0
    elseif a == 0 then
        b = 1
    else
        b = 2
    end
    
    3). while
    local i= 1
    while a[i] do
        print(a[i])
        i = i + 1
    end
    
    4). repeat
    repeat
        line = io.read()
    until line ~= "" --直到until的條件為真時結束。
    print(line)
    
    5). for
    for var = begin, end, step do --如果沒有step變量,begin的缺省步長為1。
        i = i + 1
    end
    需要說明的是,for循環開始處的三個變量begin、end和step,如果它們使表達式的返回值,那么該表達式將僅執行一次。再有就是不要在for的循環體內修改變量var的值,否則會導致不可預知的結果。
    
    6). foreach
    for i, v in ipairs(a) do  --ipairs是Lua自帶的系統函數,返回遍歷數組的迭代器。
        print(v)
    end
    
    for k in pairs(t) do      --打印table t中的所有key。
        print(k)
    end
    見如下示例代碼:

復制代碼
 1 days = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }
2 revDays = {}
3 for k, v in ipairs(days) do
4 revDays[v] = k
5 end
6
7 for k in pairs(revDays) do
8 print(k .. " = " .. revDays[k])
9 end
10
11 --輸出結果為:
12 --Saturday = 7
13 --Tuesday = 3
14 --Wednesday = 4
15 --Friday = 6
16 --Sunday = 1
17 --Thursday = 5
18 --Monday = 2
復制代碼

    7). break
    和C語言中的break語義完全相同,即跳出最內層循環。

posted on 2014-02-17 17:35 沛沛 閱讀(228) 評論(0)  編輯 收藏 引用 所屬分類: Script
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产在线视频欧美| 亚洲综合国产激情另类一区| 最近中文字幕日韩精品 | 久久久精品国产免费观看同学| 亚洲乱码一区二区| 日韩亚洲欧美中文三级| 一区二区三区久久久| 亚洲在线免费视频| 久久国产一区二区三区| 久久久久久久一区二区三区| 久久婷婷久久| 欧美激情久久久久久| 欧美激情偷拍| 欧美午夜不卡在线观看免费 | 久久综合中文色婷婷| 老司机午夜精品视频| 嫩草国产精品入口| 国内视频一区| 国产精品爱久久久久久久| 国产精品欧美日韩一区二区| 国产午夜精品麻豆| 亚洲国产精品久久久久| 亚洲影视九九影院在线观看| 欧美在线视频全部完| 欧美成人在线免费观看| av成人免费在线| 久久精品国产免费| 欧美日韩综合一区| 亚洲视频一区| 久久午夜电影| 亚洲精品美女在线观看播放| 欧美成人一区二区在线| av成人天堂| 男男成人高潮片免费网站| 国产精品久久久久久久电影| 在线观看精品| 欧美专区一区二区三区| 亚洲精品欧美激情| 久久精品最新地址| 国产伦精品一区| 日韩视频免费观看高清完整版| 久久疯狂做爰流白浆xx| 99视频有精品| 毛片av中文字幕一区二区| 国产农村妇女毛片精品久久麻豆 | 亚洲永久免费观看| 欧美日韩高清一区| 亚洲国产精品成人va在线观看| 亚欧成人在线| 一区二区三区四区五区精品视频| 免费成人毛片| 1769国内精品视频在线播放| 性色av一区二区三区在线观看 | 黄色精品一区| 欧美一区国产在线| 亚洲色图综合久久| 欧美日韩亚洲一区| 99热免费精品| 亚洲国产成人高清精品| 久久精品国亚洲| 国产在线精品一区二区夜色| 欧美一级免费视频| 亚洲无限乱码一二三四麻| 欧美日韩精品二区第二页| 亚洲看片网站| 亚洲国内精品| 欧美日韩爆操| 亚洲视频精品在线| 99re热精品| 欧美日韩成人激情| 夜夜精品视频一区二区| 亚洲看片网站| 国产精品久久久久久久久免费桃花| 中文欧美日韩| 亚洲一区二区欧美| 国产亚洲a∨片在线观看| 久久精品亚洲| 久久偷窥视频| 日韩亚洲欧美一区| 日韩亚洲综合在线| 欧美日韩在线一二三| 亚洲综合导航| 午夜精品视频在线观看| 欧美aⅴ99久久黑人专区| 久久精品中文字幕一区| 亚洲国产精品久久久久| 亚洲高清视频的网址| 欧美区在线观看| 午夜视频在线观看一区| 久久精品一本久久99精品| 狠狠色综合播放一区二区| 欧美肥婆在线| 国产精品爱啪在线线免费观看 | 亚洲精品日韩久久| 一本色道久久综合狠狠躁篇怎么玩| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ入口 | 亚洲午夜av在线| 午夜精品一区二区三区在线播放| 国产亚洲精品福利| 亚洲激情av| 国产人成精品一区二区三| 美女999久久久精品视频| 欧美精品乱人伦久久久久久| 欧美一区二区三区免费看 | 亚洲精品久久久久| 国产欧美日韩另类视频免费观看| 米奇777在线欧美播放| 欧美激情一区二区三区在线视频观看| 亚洲理论电影网| 午夜一区在线| 日韩午夜电影av| 久久免费一区| 性欧美8khd高清极品| 欧美xx视频| 欧美日韩亚洲在线| 久久爱www.| 欧美精品在线观看| 久久综合中文色婷婷| 国产精品久久激情| 亚洲国产日韩欧美在线99| 国产亚洲aⅴaaaaaa毛片| 99伊人成综合| 亚洲国产精品福利| 性18欧美另类| 性欧美8khd高清极品| 欧美视频中文一区二区三区在线观看 | 亚洲精品一区在线| 久久精品天堂| 久久精品一级爱片| 国产精品卡一卡二卡三| 亚洲精品久久7777| 99精品免费| 欧美人成在线视频| 91久久综合| 亚洲黄一区二区三区| 久久精品国产久精国产一老狼| 亚洲人体偷拍| 亚洲精品女av网站| 依依成人综合视频| 欧美中文在线字幕| 久久成人免费视频| 国产精品xxxav免费视频| 日韩亚洲欧美成人| 中文在线一区| 欧美日韩少妇| 亚洲精品一区在线| 99国产精品久久久久久久久久| 欧美xxxx在线观看| 亚洲精选久久| 99精品99| 欧美系列亚洲系列| 亚洲欧美日韩一区二区| 欧美一区成人| 红桃视频国产精品| 农村妇女精品| 亚洲巨乳在线| 亚洲欧美日韩视频二区| 国产日韩精品视频一区| 久久大综合网| 欧美电影美腿模特1979在线看 | 久久另类ts人妖一区二区| 模特精品裸拍一区| 亚洲精品综合久久中文字幕| 欧美日韩在线观看视频| 亚洲综合色自拍一区| 久久久久久亚洲综合影院红桃| 一区精品久久| 欧美成人一区二区在线| 夜夜夜久久久| 欧美一区二区免费视频| 好吊视频一区二区三区四区| 欧美国产精品v| 亚洲永久免费视频| 欧美大片免费观看在线观看网站推荐| 亚洲主播在线播放| 亚洲精品一二区| 午夜精品久久久| 在线精品国产欧美| 欧美日韩综合视频网址| 久久国产精品72免费观看| 亚洲国产精品va在线观看黑人| 亚洲午夜一区二区| 玉米视频成人免费看| 欧美乱在线观看| 久久九九免费视频| 亚洲黑丝在线| 国产精品美女午夜av| 欧美mv日韩mv国产网站| 亚洲欧美日韩中文视频| 欧美激情中文字幕一区二区| 香蕉精品999视频一区二区| 亚洲区一区二| 狠狠狠色丁香婷婷综合久久五月| 欧美性猛交xxxx乱大交蜜桃| 久色婷婷小香蕉久久| 午夜精品福利视频| 亚洲久久一区| 亚洲三级色网| 欧美成人在线影院| 久久精品99国产精品|