freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

lua51參考手冊(cè)-在線瀏覽

2025-07-23 19:10本頁面
  

【正文】 塊可以被顯式的寫成一個(gè)單獨(dú)的語句段: stat ::= do block end顯式的語句塊對(duì)于控制變量的作用范圍很有用。)。因此,賦值的語法定義是等號(hào)左邊放一系列變量,而等號(hào)右邊放一系列的表達(dá)式。 explist1 varlist1 ::= var {`,180。 exp}表達(dá)式放在 167。 在作賦值操作之前,那一系列的右值會(huì)被對(duì)齊到左邊變量需要的個(gè)數(shù)。如果右值的數(shù)量不夠需求,將會(huì)按所需擴(kuò)展若干個(gè) nil。(除非這個(gè)函數(shù)調(diào)用被用括號(hào)括了起來;參見 167。 賦值段首先會(huì)做運(yùn)算完所有的表達(dá)式,然后僅僅做賦值操作。這是因?yàn)?a[i] 中的 i 在被賦值為 4 之前就被拿出來了(那時(shí)是 3 )。 對(duì)全局變量以及 table 中的域的賦值操作的含義可以通過 metatable 來改變。(關(guān)于函數(shù) settable_event 的詳細(xì)說明,參見 167。這里我們列出來,僅僅出于方便解釋的目的) 對(duì)于全局變量的賦值 x = val 等價(jià)于 = val,這個(gè)又可以等價(jià)于 settable_event(_env, x, val)這里,_env 指的是正在運(yùn)行中的函數(shù)的環(huán)境。我們僅僅出于解釋的目的在這里寫出來。)。 false 和 nil 兩者都被認(rèn)為是假條件。 在 repeat–until 循環(huán)中,內(nèi)部語句塊的結(jié)束點(diǎn)不是在 until 這個(gè)關(guān)鍵字處,它還包括了其后的條件表達(dá)式。 return 被用于從函數(shù)或是 chunk(其實(shí)它就是一個(gè)函數(shù))中返回值。 return 和 break 只能被寫在一個(gè)語句塊的最后一句。一般寫作 do return end 或是 do break end,可以這樣寫是因?yàn)楝F(xiàn)在 return 或 break 都成了一個(gè)語句塊的最后一句了。 數(shù)字形式的 for 循環(huán),通過一個(gè)數(shù)學(xué)運(yùn)算不斷的運(yùn)行內(nèi)部的代碼塊。 exp `,180。 exp] do block endblock 將把 name 作循環(huán)變量。更確切的說,一個(gè) for 循環(huán)看起來是這個(gè)樣子 for v = e1, e2, e3 do block end這等價(jià)于代碼: do local var, limit, step = tonumber(e1), tonumber(e2), tonumber(e3) if not (var and limit and step) then error() end while (step 0 and var = limit) or (step = 0 and var = limit) do local v = var block var = var + step end end注意下面這幾點(diǎn): ? 所有三個(gè)控制表達(dá)式都只被運(yùn)算一次,表達(dá)式的計(jì)算在循環(huán)開始之前。 ? var 、limit 、以及 step 都是一些不可見的變量。 ? 如果第三個(gè)表達(dá)式(步長)沒有給出,會(huì)把步長設(shè)為 1 。 ? 循環(huán)變量 v 是一個(gè)循環(huán)內(nèi)部的局部變量;當(dāng) for 循環(huán)結(jié)束后,你就不能在使用它。 一般形式的 for 通過一個(gè)叫作疊代器(iterators)的函數(shù)工作。一般形式的 for 循環(huán)的語法如下: stat ::= for namelist in explist1 do block end namelist ::= Name {`,180。它返回三個(gè)值, 一個(gè)疊代器函數(shù),一個(gè)狀態(tài),一個(gè)疊代器的初始值。這里給它們起的名字都只是為了解說方便。 ? 循環(huán)變量 var_i 對(duì)于循環(huán)來說是一個(gè)局部變量;你不可以在 for 循環(huán)結(jié)束后繼續(xù)使用。 把函數(shù)調(diào)用作為語句段為了允許使用可能的副作用,函數(shù)調(diào)用可以被作為一個(gè)語句段執(zhí)行: stat ::= functioncall在這種情況下,所有的返回值都被舍棄。 中解釋。聲名可以包含一個(gè)初始化賦值操作: stat ::= local namelist [`=180。)。 一個(gè) chunk 同時(shí)也是一個(gè)語句塊(參見 167。這些局部變量的作用范圍從聲明起一直延伸到 chunk 末尾。 中解釋。 exp ::= exp binop exp exp ::= unop exp prefixexp ::= var | functioncall | `(180。數(shù)字和字符串在 167。 中解釋;函數(shù)定義在 167。 中解釋; table 的構(gòu)造在 167。...39。 中解釋。),比較操作符(參見 167。),以及連接操作符(參見 167。一元操作符包括負(fù)號(hào)(參見see 167。),和取長度操作符(參見 167。 函數(shù)調(diào)用和可變參數(shù)表達(dá)式都可以放在多重返回值中。)(這只能是一個(gè)函數(shù)調(diào)用),它們的返回列表將被對(duì)齊到零個(gè)元素,也就是忽略所有返回值。在任何其它的情況下,Lua 將把表達(dá)式結(jié)果看成單一元素,忽略除第一個(gè)之外的任何值。所以, (f(x,y,z)) 即使 f 返回多個(gè)值,這個(gè)表達(dá)式永遠(yuǎn)是一個(gè)單一值。如果 f 不返回值的話,那么它的值就是 nil 。如果對(duì)數(shù)字操作,或是可以轉(zhuǎn)換為數(shù)字的字符串(參見 167。冪操作可以對(duì)任何冪值都正常工作。取模操作被定義為 a % b == a (a/b)*b這就是說,其結(jié)果是商相對(duì)負(fù)無窮圓整后的余數(shù)。 等于操作 (==) 首先比較操作數(shù)的類型。否則,繼續(xù)比較值。對(duì)象 (table ,userdata ,thread ,以及函數(shù))以引用的形式比較:兩個(gè)對(duì)象只有在它們指向同一個(gè)東西時(shí)才認(rèn)為相等。 你可以改變 Lua 比較 table 和 userdata 的方式,這需要使用 eq 這個(gè)原方法(參見 167。 167。所以, 0==0 等于 false,而且 t[0] 和 t[0] 描述的是 table 中不同的域。 大小比較操作以以下方式進(jìn)行。否則,如果參數(shù)都是字符串,就用字符串比較的方式進(jìn)行。)。和控制結(jié)構(gòu)(參見 167。 取反操作 not 總是返回 false 或 true 中的一個(gè)?;虿僮鞣?or 在第一個(gè)參數(shù)不為 nil 也不為 false 時(shí),返回這第一個(gè)參數(shù),否則返回第二個(gè)參數(shù)。這里有一些例子: 10 or 20 10 10 or error() 10 nil or a a nil and 10 nil false and error() false false and nil false false or nil nil 10 and 20 20(在這本手冊(cè)中, 指前面表達(dá)式的結(jié)果。..39。如果兩個(gè)操作數(shù)都是字符串或都是數(shù)字,連接操作將以 167。否則,會(huì)取調(diào)用元方法 concat (參見 167。 取長度操作符取長度操作符寫作一元操作 。 table t 的長度被定義成一個(gè)整數(shù)下標(biāo) n 。對(duì)于常規(guī)的數(shù)組,里面從 1 到 n 放著一些非空的值的時(shí)候,它的長度就精確的為 n,即最后一個(gè)值的下標(biāo)。 優(yōu)先級(jí)Lua 中操作符的優(yōu)先級(jí)寫在下表中,從低到高優(yōu)先級(jí)排序: or and = = ~= == .. + * / % not (unary) ^通常,你可以用括號(hào)來改變運(yùn)算次序。..39。^39。其它所有的操作都是從左至右。每次構(gòu)造子被執(zhí)行,都會(huì)構(gòu)造出一個(gè)新的 table 。一般的構(gòu)造子的語法如下 tableconstructor ::= `{180。 fieldlist ::= field {fieldsep field} [fieldsep] field ::= `[180。 `=180。 exp | exp fieldsep ::= `,180。180。形如 name = exp 的域等價(jià)于 [name] = exp。這這個(gè)格式中的其它域不會(huì)破壞其記數(shù)。 x, y。 45 }等價(jià)于 do local t = {} t[f(1)] = g t[1] = x 1st exp t[2] = y 2nd exp = 1 t[x] = 1 t[3] = f(x) 3rd exp t[30] = 23 t[4] = 45 4th exp a = t end如果表單中最后一個(gè)域的形式是 exp ,而且其表達(dá)式是一個(gè)函數(shù)調(diào)用或者是一個(gè)可變參數(shù),那么這個(gè)表達(dá)式所有的返回值將連續(xù)的進(jìn)入列表(參見 167。為了避免這一點(diǎn),你可以用括號(hào)把函數(shù)調(diào)用(或是可變參數(shù))括起來(參見 167。 初始化域表可以在最后多一個(gè)分割符,這樣設(shè)計(jì)可以方便由機(jī)器生成代碼。如果 prefixexp 的值的類型是 function,那么這個(gè)函數(shù)就被用給出的參數(shù)調(diào)用。)。 Name args可以用來調(diào)用 方法。像 v:name(args) 這個(gè)樣子,被解釋成 (v,args),這里 v 只會(huì)被求值一次。 [explist1] `)180。這樣的調(diào)用形式 f{fields} 是一種語法糖用于表示 f({fields});這里指參數(shù)列表是一個(gè)單一的新創(chuàng)建出來的列表。string39。string39。 因?yàn)楸磉_(dá)式語法在 Lua 中比較自由,所以你不能在函數(shù)調(diào)用的 39。 前換行。比如你這樣寫 a = f (g).x(a)Lua 將把它當(dāng)作一個(gè)單一語句段, a = f(g).x(a) 。如果你真的想調(diào)用 f,你必須從 (g) 前移去換行。 Lua 實(shí)現(xiàn)了適當(dāng)?shù)奈膊空{(diào)用(或是適當(dāng)?shù)奈策f歸):在尾調(diào)用中,被調(diào)用的函數(shù)重用調(diào)用它的函數(shù)的堆棧項(xiàng)。然而,尾調(diào)用將刪除調(diào)用它的函數(shù)的任何調(diào)試信息。因此,下面這些例子都不是尾調(diào)用: return (f(x)) 返回值被調(diào)整為一個(gè) return 2 * f(x) return x, f(x) 最加若干返回值 f(x)。 [parlist1] `)180。 Name} [`:180。 f = function () body end注意,并不是轉(zhuǎn)換成 local f = function () body end(這個(gè)差別只在函數(shù)體內(nèi)需要引用 f 時(shí)才有。當(dāng) Lua 預(yù)編譯一個(gè) chunk 的時(shí)候, chunk 作為一個(gè)函數(shù),整個(gè)函數(shù)體也就被預(yù)編譯了。這個(gè)函數(shù)的實(shí)例(或者說是 closure(閉包))是表達(dá)式的最終值。 形參(函數(shù)定義需要的參數(shù))是一些由實(shí)參(實(shí)際傳入?yún)?shù))的值初始化的局部變量: parlist1 ::= namelist [`,180。] | `...180。...39。這個(gè)表達(dá)式的值是一串實(shí)參值的列表,看起來就跟一個(gè)可以返回多個(gè)結(jié)果的函數(shù)一樣。若這個(gè)表達(dá)式放在了一系列表達(dá)式的最后一個(gè),就不會(huì)做調(diào)整了(除非用括號(hào)給括了起來)。)。 冒號(hào)語法可以用來定義方法,就是說,函數(shù)可以有一個(gè)隱式的形參 self。變量的作用范圍開始于聲明它們之后的第一個(gè)語句段,結(jié)束于包含這個(gè)聲明的最內(nèi)層語句塊的結(jié)束點(diǎn)。x39。x39。 因?yàn)橛羞@樣一個(gè)詞法作用范圍的規(guī)則,所以可以在函數(shù)內(nèi)部自由的定義局部變量并使用它們。 注意,每次執(zhí)行到一個(gè) local 語句都會(huì)定義出一個(gè)新的局部變量。 return x+y end end這個(gè)循環(huán)創(chuàng)建了十個(gè) closure(這指十個(gè)匿名函數(shù)的實(shí)例)。 錯(cuò)誤處理因?yàn)?Lua 是一個(gè)嵌入式的擴(kuò)展語言,所有的 Lua 動(dòng)作都是從宿主程序的 C 代碼調(diào)用 Lua 庫(參見 lua_pcall)中的一個(gè)函數(shù)開始的。 Lua 代碼可以顯式的調(diào)用 error 函數(shù)來產(chǎn)生一條錯(cuò)誤。 Metatable(元表)Lua 中的每個(gè)值都可以用一個(gè) metatable。你可以通過在 metatable 中的特定域設(shè)一些值來改變擁有這個(gè) metatable 的值的指定操作之行為。如果有這么一個(gè)函數(shù)的話,Lua 調(diào)用這個(gè)函數(shù)來執(zhí)行一次加法。在上個(gè)例子中,事件是 add 而元方法就是那個(gè)執(zhí)行加法操作的函數(shù)。 你可以通過 setmetatable 函數(shù)來替換掉 table 的 metatable 。 每個(gè) table 和 userdata 擁有獨(dú)立的 metatable (當(dāng)然多個(gè) table 和 userdata 可以共享一個(gè)相同的表作它們的 metatable);其它所有類型的值,每種類型都分別共享唯一的一個(gè) metatable。 一個(gè) metatable 可以控制一個(gè)對(duì)象做數(shù)學(xué)運(yùn)算操作、比較操作、連接操作、取長度操作、取下標(biāo)操作時(shí)的行為, metatable 中還可以定義一個(gè)函數(shù),讓 userdata 作垃圾收集時(shí)調(diào)用它。當(dāng) Lua 需要對(duì)一個(gè)值發(fā)起這些操作中的一個(gè)時(shí),它會(huì)去檢查值中 metatable 中是否有對(duì)應(yīng)事件。 metatable 可以控制的操作已在下面列出來。每個(gè)操作的鍵名都是用操作名字加上兩個(gè)下劃線 39。 前綴的字符串;舉例來說,add 操作的鍵名就是字符串 __add。 這里展示的用 Lua 寫的代碼僅作解說用;實(shí)際的行為已經(jīng)硬編碼在解釋器中,其執(zhí)行效率要遠(yuǎn)高于這些模擬代碼。)都可以在 167。特別注意,我們使用這樣一個(gè)表達(dá)式來從給定對(duì)象中提取元方法 metatable(obj)[eve
點(diǎn)擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1