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

正文內容

lua51參考手冊(編輯修改稿)

2025-07-02 19:10 本頁面
 

【文章內容簡介】 nd 在第一個參數(shù)為 false 或 nil 時返回這第一個參數(shù);否則,and 返回第二個參數(shù)?;虿僮鞣?or 在第一個參數(shù)不為 nil 也不為 false 時,返回這第一個參數(shù),否則返回第二個參數(shù)。 and 和 or 都遵循短路規(guī)則;也就是說,第二個操作數(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(在這本手冊中, 指前面表達式的結果。) 連接符Lua 中字符串的連接操作符寫作兩個點 (39。..39。)。如果兩個操作數(shù)都是字符串或都是數(shù)字,連接操作將以 167。 中提到的規(guī)則把其轉換為字符串。否則,會取調用元方法 concat (參見 167。)。 取長度操作符取長度操作符寫作一元操作 。字符串的長度是它的字節(jié)數(shù)(就是以一個字符一個字節(jié)計算的字符串長度)。 table t 的長度被定義成一個整數(shù)下標 n 。它滿足 t[n] 不是 nil 而 t[n+1] 為 nil;此外,如果 t[1] 為 nil ,n 就可能是零。對于常規(guī)的數(shù)組,里面從 1 到 n 放著一些非空的值的時候,它的長度就精確的為 n,即最后一個值的下標。如果數(shù)組有一個“空洞” (就是說,nil 值被夾在非空值之間),那么 t 可能是任何一個是 nil 值的位置的下標(就是說,任何一個 nil 值都有可能被當成數(shù)組的結束)。 優(yōu)先級Lua 中操作符的優(yōu)先級寫在下表中,從低到高優(yōu)先級排序: or and = = ~= == .. + * / % not (unary) ^通常,你可以用括號來改變運算次序。連接操作符 (39。..39。) 和冪操作 (39。^39。) 是從右至左的。其它所有的操作都是從左至右。 Table 構造table 構造子是一個構造 table 的表達式。每次構造子被執(zhí)行,都會構造出一個新的 table 。構造子可以被用來構造一個空的 table,也可以用來構造一個 table 并初始化其中的一些域。一般的構造子的語法如下 tableconstructor ::= `{180。 [fieldlist] `}180。 fieldlist ::= field {fieldsep field} [fieldsep] field ::= `[180。 exp `]180。 `=180。 exp | Name `=180。 exp | exp fieldsep ::= `,180。 | `。180。每個形如 [exp1] = exp2 的域向 table 中增加新的一項,其鍵值為 exp1 而值為 exp2。形如 name = exp 的域等價于 [name] = exp。最后,形如 exp 的域等價于 [i] = exp , 這里的 i 是一個從 1 開始不斷增長的數(shù)字。這這個格式中的其它域不會破壞其記數(shù)。舉個例子: a = { [f(1)] = g。 x, y。 x = 1, f(x), [30] = 23。 45 }等價于 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如果表單中最后一個域的形式是 exp ,而且其表達式是一個函數(shù)調用或者是一個可變參數(shù),那么這個表達式所有的返回值將連續(xù)的進入列表(參見 167。)。為了避免這一點,你可以用括號把函數(shù)調用(或是可變參數(shù))括起來(參見 167。)。 初始化域表可以在最后多一個分割符,這樣設計可以方便由機器生成代碼。 函數(shù)調用Lua 中的函數(shù)調用的語法如下: functioncall ::= prefixexp args函數(shù)調用時,第一步,prefixexp 和 args 先被求值。如果 prefixexp 的值的類型是 function,那么這個函數(shù)就被用給出的參數(shù)調用。否則 prefixexp 的元方法 call 就被調用,第一個參數(shù)就是 prefixexp 的值,跟下來的是原來的調用參數(shù)(參見 167。)。 這樣的形式 functioncall ::= prefixexp `:180。 Name args可以用來調用 方法。這是 Lua 支持的一種語法糖。像 v:name(args) 這個樣子,被解釋成 (v,args),這里 v 只會被求值一次。 參數(shù)的語法如下: args ::= `(180。 [explist1] `)180。 args ::= tableconstructor args ::= String所有參數(shù)的表達式求值都在函數(shù)調用之前。這樣的調用形式 f{fields} 是一種語法糖用于表示 f({fields});這里指參數(shù)列表是一個單一的新創(chuàng)建出來的列表。而這樣的形式 f39。string39。 (或是 fstring 亦或是 f[[string]])也是一種語法糖,用于表示 f(39。string39。);這里指參數(shù)列表是一個單獨的字符串。 因為表達式語法在 Lua 中比較自由,所以你不能在函數(shù)調用的 39。(39。 前換行。這個限制可以避免語言中的一些歧義。比如你這樣寫 a = f (g).x(a)Lua 將把它當作一個單一語句段, a = f(g).x(a) 。因此,如果你真的想作為成兩個語句段,你必須在它們之間寫上一個分號。如果你真的想調用 f,你必須從 (g) 前移去換行。 這樣一種調用形式:return functioncall 將觸發(fā)一個尾調用。 Lua 實現(xiàn)了適當?shù)奈膊空{用(或是適當?shù)奈策f歸):在尾調用中,被調用的函數(shù)重用調用它的函數(shù)的堆棧項。因此,對于程序執(zhí)行的嵌套尾調用的層數(shù)是沒有限制的。然而,尾調用將刪除調用它的函數(shù)的任何調試信息。注意,尾調用只發(fā)生在特定的語法下,這時, return 只有單一函數(shù)調用作為參數(shù);這種語法使得調用函數(shù)的結果可以精確返回。因此,下面這些例子都不是尾調用: return (f(x)) 返回值被調整為一個 return 2 * f(x) return x, f(x) 最加若干返回值 f(x)。 return 無返回值 return x or f(x) 返回值被調整為一個 函數(shù)定義函數(shù)定義的語法如下: function ::= function funcbody funcbody ::= `(180。 [parlist1] `)180。 block end另外定義了一些語法糖簡化函數(shù)定義的寫法: stat ::= function funame funcbody stat ::= local function Name funcbody funame ::= Name {`.180。 Name} [`:180。 Name]這樣的寫法: function f () body end被轉換成 f = function () body end這樣的寫法: function () body end被轉換成 = function () body end這樣的寫法: local function f () body end被轉換成 local f。 f = function () body end注意,并不是轉換成 local f = function () body end(這個差別只在函數(shù)體內需要引用 f 時才有。) 一個函數(shù)定義是一個可執(zhí)行的表達式,執(zhí)行結果是一個類型為 function 的值。當 Lua 預編譯一個 chunk 的時候, chunk 作為一個函數(shù),整個函數(shù)體也就被預編譯了。那么,無論何時 Lua 執(zhí)行了函數(shù)定義,這個函數(shù)本身就被實例化了(或者說是關閉了)。這個函數(shù)的實例(或者說是 closure(閉包))是表達式的最終值。相同函數(shù)的不同實例有可能引用不同的外部局部變量,也可能擁有不同的環(huán)境表。 形參(函數(shù)定義需要的參數(shù))是一些由實參(實際傳入?yún)?shù))的值初始化的局部變量: parlist1 ::= namelist [`,180。 `...180。] | `...180。當一個函數(shù)被調用,如果函數(shù)沒有被定義為接收不定長參數(shù),即在形參列表的末尾注明三個點 (39。...39。),那么實參列表就會被調整到形參列表的長度,變長參數(shù)函數(shù)不會調整實參列表;取而代之的是,它將把所有額外的參數(shù)放在一起通過變長參數(shù)表達式傳遞給函數(shù),其寫法依舊是三個點。這個表達式的值是一串實參值的列表,看起來就跟一個可以返回多個結果的函數(shù)一樣。如果一個變長參數(shù)表達式放在另一個表達式中使用,或是放在另一串表達式的中間,那么它的返回值就會被調整為單個值。若這個表達式放在了一系列表達式的最后一個,就不會做調整了(除非用括號給括了起來)。 我們先做如下定義,然后再來看一個例子: function f(a, b) end function g(a, b, ...) end function r() return 1,2,3 end下面看看實參到形參數(shù)以及可變長參數(shù)的映射關系: CALL PARAMETERS f(3) a=3, b=nil f(3, 4) a=3, b=4 f(3, 4, 5) a=3, b=4 f(r(), 10) a=1, b=10 f(r()) a=1, b=2 g(3) a=3, b=nil, ... (nothing) g(3, 4) a=3, b=4, ... (nothing) g(3, 4, 5, 8) a=3, b=4, ... 5 8 g(5, r()) a=5, b=1, ... 2 3結果由 return 來返回(參見 167。)。如果執(zhí)行到函數(shù)末尾依舊沒有遇到任何 return 語句,函數(shù)就不會返回任何結果。 冒號語法可以用來定義方法,就是說,函數(shù)可以有一個隱式的形參 self。因此,如下寫法: function :f (params) body end是這樣一種寫法的語法糖: = function (self, params) body end 可視規(guī)則Lua 是一個有詞法作用范圍的語言。變量的作用范圍開始于聲明它們之后的第一個語句段,結束于包含這個聲明的最內層語句塊的結束點。看下面這些例子: x = 10 全局變量 do 新的語句塊 local x = x 新的一個 39。x39。, 它的值現(xiàn)在是 10 print(x) 10 x = x+1 do 另一個語句塊 local x = x+1 又一個 39。x39。 print(x) 12 end print(x) 11 end print(x) 10 (取到的是全局的那一個)注意這里,類似 local x = x 這樣的聲明,新的 x 正在被聲明,但是還沒有進入它的作用范圍,所以第二個 x 指向的是外面一層的變量。 因為有這樣一個詞法作用范圍的規(guī)則,所以可以在函數(shù)內部自由的定義局部變量并使用它們。當一個局部變量被更內層的函數(shù)中使用的時候,它被內層函數(shù)稱作 upvalue(上值),或是 外部局部變量。 注意,每次執(zhí)行到一個 local 語句都會定義出一個新的局部變量??纯催@樣一個例子: a = {} local x = 20 for i=1,10 do local y = 0 a[i] = function () y=y+1。 return x+y end end這個循環(huán)創(chuàng)建了十個 closure(這指十個匿名函數(shù)的實例)。這些 closure 中的每一
點擊復制文檔內容
法律信息相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1