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

正文內(nèi)容

lua51參考手冊-在線瀏覽

2025-07-25 07:36本頁面
  

【正文】 中有三類變量:全局變量,局部變量,還有 table 的域。 中所定義的標(biāo)識符。)。)。 方括號被用來對 table 作索引: var ::= prefixexp `[180。對全局變量以及 table 域之訪問的含義可以通過 metatable 來改變。(參見 167。這個函數(shù)并沒有在 lua 中定義出來,也不能在 lua 中調(diào)用。) 這種語法只是一個語法糖,用來表示 var[Name]: var ::= prefixexp `.180。)。當(dāng)一個函數(shù)被創(chuàng)建出來,它會從創(chuàng)建它的函數(shù)中繼承其環(huán)境,你可以調(diào)用 getfenv 取得其環(huán)境。(對于 C 函數(shù),你只能通過 debug 庫來改變其環(huán)境;參見 167。 對一個全局變量 x 的訪問等價于 ,而這又可以等價于 gettable_event(_env, x)這里,_env 是當(dāng)前運行的函數(shù)的環(huán)境。這個函數(shù)并沒有在 lua 中定義出來,也不能調(diào)用。我們在這里使用它們,僅僅只是方便解釋而已。這個集合包括賦值,控制結(jié)構(gòu),函數(shù)調(diào)用,還有變量聲明。一個 chunk 就是一串語句段,它們會被循序的執(zhí)行。180。39。 lua 把一個 chunk 當(dāng)作一個擁有不定參數(shù)的匿名函數(shù)(參見 167。正是這樣,chunk 內(nèi)可以定義局部變量,接收參數(shù),并且返回值。當(dāng)一個 chunk 被執(zhí)行,首先它會被預(yù)編譯成虛擬機中的指令序列,然后被虛擬機解釋運行這些指令。用源碼形式提供的程序和被編譯過的二進(jìn)制形式的程序是可以相互替換的; Lua 會自動識別文件類型并做正確的處理。有時候,顯式的語句塊被用來在另一個語句塊中插入 return 或是 break (參見 167。 賦值Lua 允許多重賦值。兩邊的元素都用逗號間開: stat ::= varlist1 `=180。 var} explist1 ::= exp {`,180。 里討論。如果右值比需要的更多的話,多余的值就被扔掉。如果表達(dá)式列表以一個函數(shù)調(diào)用結(jié)束,這個函數(shù)所返回的所有值都會在對齊操作之前被置入右值序列中。)。因此,下面這段代碼 i = 3 i, a[i] = i+1, 20會把 a[3] 設(shè)置為 20,而不會影響到 a[4] 。簡單說 ,這樣一行 x, y = y, x可以用來交換 x 和 y 中的值。對變量下標(biāo)指向的賦值,即 t[i] = val 等價于 settable_event(t,i,val)。這個函數(shù)并沒有在 Lua 中定義出來,也不可以被調(diào)用。(變量 _env 并沒有在 Lua 中定義出來。) 控制結(jié)構(gòu)if、 while、以及 repeat 這些控制結(jié)構(gòu)符合通常的意義,而且也有類似的語法: stat ::= while exp do block end stat ::= repeat block until exp stat ::= if exp then block {elseif exp then block} [else block] endLua 也有一個 for 語句,它有兩種形式(參見 167。 控制結(jié)構(gòu)中的條件表達(dá)式可以返回任何值。所有不同于 nil 和 false 的其它值都被認(rèn)為是真(特別需要注意的是,數(shù)字 0 和空字符串也被認(rèn)為是真)。因此,條件表達(dá)式中可以使用循環(huán)內(nèi)部語句塊中的定義的局部變量。 函數(shù)和 chunk 可以返回不只一個值,所以 return 的語法為 stat ::= return [explist1]break 被用來結(jié)束 while、 repeat、或 for 循環(huán),它將忽略掉循環(huán)中下面的語句段的運行: stat ::= breakbreak 跳出最內(nèi)層的循環(huán)。如果你真的需要從語句塊的中間 return 或是 break ,你可以使用顯式的聲名一個內(nèi)部語句塊。 For 語句for 有兩種形式:一種是數(shù)字形式,另一種是一般形式。下面是它的語法: stat ::= for Name `=180。 exp [`,180。從第一個 exp 開始起,直到第二個 exp 的值為止,其步長為第三個 exp 。 所有三個控制表達(dá)式都只被運算一次,表達(dá)式的計算在循環(huán)開始之前。 這里給它們起的名字都僅僅用于解釋方便。 如果第三個表達(dá)式(步長)沒有給出,會把步長設(shè)為 1 。 你可以用 break 來退出 for 循環(huán)。 循環(huán)變量 v 是一個循環(huán)內(nèi)部的局部變量;當(dāng) for 循環(huán)結(jié)束后,你就不能在使用它。 一般形式的 for 通過一個叫作迭代器(iterators)的函數(shù)工作。一般形式的 for 循環(huán)的語法如下: stat ::= for namelist in explist1 do block end namelist ::= Name {`,180。, var_n in explist do block end它等價于這樣一段代碼: do local f, s, var = explist while true do local var_1, explist 只會被計算一次。 這里給它們起的名字都只是為了解說方便。 你可以使用 break 來跳出 for 循環(huán)。 循環(huán)變量 var_i 對于循環(huán)來說是一個局部變量;你不可以在 for 循環(huán)結(jié)束后繼續(xù)使用。 把函數(shù)調(diào)用作為語句段為了允許使用可能的副作用,函數(shù)調(diào)用可以被作為一個語句段執(zhí)行: stat ::= functioncall在這種情況下,所有的返回值都被舍棄。 中解釋。聲名可以包含一個初始化賦值操作: stat ::= local namelist [`=180。)。 一個 chunk 同時也是一個語句塊(參見 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ù)號(參見see 167。),和取長度操作符(參見 167。 函數(shù)調(diào)用和可變參數(shù)表達(dá)式都可以放在多重返回值中。)(這只能是一個函數(shù)調(diào)用),它們的返回列表將被對齊到零個元素,也就是忽略所有返回值。在任何其它的情況下,Lua 將把表達(dá)式結(jié)果看成單一元素,忽略除第一個之外的任何值。所以, (f(x,y,z)) 即使 f 返回多個值,這個表達(dá)式永遠(yuǎn)是一個單一值。如果 f 不返回值的話,那么它的值就是 nil 。如果對數(shù)字操作,或是可以轉(zhuǎn)換為數(shù)字的字符串(參見 167。冪操作可以對任何冪值都正常工作。取模操作被定義為 a % b == a (a/b)*b這就是說,其結(jié)果是商相對負(fù)無窮圓整后的余數(shù)。 等于操作 (==) 首先比較操作數(shù)的類型。否則,繼續(xù)比較值。對象 (table ,userdata ,thread ,以及函數(shù))以引用的形式比較:兩個對象只有在它們指向同一個東西時才認(rèn)為相等。 你可以改變 Lua 比較 table 和 userdata 的方式,這需要使用 eq 這個原方法(參見 167。 167。所以, 0==0 等于 false,而且 t[0] 和 t[0] 描述的是 table 中不同的域。 大小比較操作以以下方式進(jìn)行。否則,如果參數(shù)都是字符串,就用字符串比較的方式進(jìn)行。)。和控制結(jié)構(gòu)(參見 167。 取反操作 not 總是返回 false 或 true 中的一個?;虿僮鞣?or 在第一個參數(shù)不為 nil 也不為 false 時,返回這第一個參數(shù),否則返回第二個參數(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(在這本手冊中, 指前面表達(dá)式的結(jié)果。..39。如果兩個操作數(shù)都是字符串或都是數(shù)字,連接操作將以 167。否則,會取調(diào)用元方法 concat (參見 167。 取長度操作符取長度操作符寫作一元操作 。 table t 的長度被定義成一個整數(shù)下標(biāo) n 。對于常規(guī)的數(shù)組,里面從 1 到 n 放著一些非空的值的時候,它的長度就精確的為 n,即最后一個值的下標(biāo)。 優(yōu)先級Lua 中操作符的優(yōu)先級寫在下表中,從低到高優(yōu)先級排序: or and = = ~= == .. + * / % not (unary) ^通常,你可以用括號來改變運算次序。..39。^39。其它所有的操作都是從左至右。每次構(gòu)造子被執(zhí)行,都會構(gòu)造出一個新的 table 。一般的構(gòu)造子的語法如下 tableconstructor ::= `{180。 fieldlist ::= field {fieldsep field} [fieldsep] field ::= `[180。 `=180。 exp | exp fieldsep ::= `,180。180。形如 name = exp 的域等價于 [name] = exp。這這個格式中的其它域不會破壞其記數(shù)。 x, y。 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 ,而且其表達(dá)式是一個函數(shù)調(diào)用或者是一個可變參數(shù),那么這個表達(dá)式所有的返回值將連續(xù)的進(jìn)入列表(參見 167。為了避免這一點,你可以用括號把函數(shù)調(diào)用(或是可變參數(shù))括起來(參見 167。 初始化域表可以在最后多一個分割符,這樣設(shè)計可以方便由機器生成代碼。如果 prefixexp 的值的類型是 function,那么這個函數(shù)就被用給出的參數(shù)調(diào)用。)。 Name args可以用來調(diào)用 方法。像 v:name(args) 這個樣子,被解釋成 (v,args),這里 v 只會被求值一次。 [explist1] `)180。這樣的調(diào)用形式 f{fields} 是一種語法糖用于表示 f({fields});這里指參數(shù)列表是一個單一的新創(chuàng)建出來的列表。string39。string39。 因為表達(dá)式語法在 Lua 中比較自由,所以你不能在函數(shù)調(diào)用的 39。 前換行。比如你這樣寫 a = f (g).x(a)Lua 將把它當(dāng)作一個單一語句段, a = f(g).x(a) 。如果你真的想調(diào)用 f,你必須從 (g) 前移去換行。 Lua 實現(xiàn)了適當(dāng)?shù)奈膊空{(diào)用(或是適當(dāng)?shù)奈策f歸):在尾調(diào)用中,被調(diào)用的函數(shù)重用調(diào)用它的函數(shù)的堆棧項。然而,尾調(diào)用將刪除調(diào)用它的函數(shù)的任何調(diào)試信息。因此,下面這些例子都不是尾調(diào)用: return (f(x)) 返回值被調(diào)整為一個 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(這個差別只在函數(shù)體內(nèi)需要引用 f 時才有。當(dāng) Lua 預(yù)編譯一個 chunk 的時候, chunk 作為一個函數(shù),整個函數(shù)體也就被預(yù)編譯了。這個函數(shù)的實例(或者說是 closure(閉包))是表達(dá)式的最終值。 形參(函數(shù)定義需要的參數(shù))是一些由實參(實際傳入?yún)?shù))的值初始化的局部變量: parlist1 ::= namelist [`,180。] | `...180。...39。這個表達(dá)式的值是一串實參值的列表,看起來就跟一個可以返回多個結(jié)果的函數(shù)一樣。若這個表達(dá)式放在了一系列表達(dá)式的最后一個,就不會做調(diào)整了(除非用括號給括了起來)。)。 冒號語法可以用來定義方法,就是說,函數(shù)可以有一個隱式的形參 self。變量的作用范圍開始于聲明它們之后的第一個語句段,結(jié)束于包含這個聲明的最內(nèi)層語句塊的結(jié)束點。x39。x39。 因為有這樣一個詞法作用范圍的規(guī)則,所以可以在函數(shù)內(nèi)部自由的定義局部變量并使用它們。 注意,每次執(zhí)行到一個 local 語句都會定義出一個新的局部變量。 return x+y end end這個循環(huán)創(chuàng)建了十個 closure(這指十個匿名函數(shù)的實例)。 錯誤處理因為 Lua 是一個嵌入式的擴展語言,所有的 Lua 動作都是從宿主程序的 C 代碼調(diào)用 Lua 庫(參見 lua_pcall)中的一個函數(shù)開
點擊復(fù)制文檔內(nèi)容
數(shù)學(xué)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1