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

正文內(nèi)容

lua參考手冊-在線瀏覽

2025-07-23 19:10本頁面
  

【正文】 函數(shù)(見 )。Lua中有三種不同的變量:全局變量,局部變量和表字段。局部變量有 詞義范圍(lexically scoped):局部變量可以被在它們范圍內(nèi)的函數(shù)自由訪問 (見 )。 方括號用于對表進行檢索: var ::= prefixexp `[180。第一個表達式 (prefixexp)結(jié)果必須是表;第二個表達式 (exp) 識別表中一個特定條目。 語法是 var[NAME] 的較好形式: var ::= prefixexp `.180。對索引變量 t[i] 的訪問等同于調(diào)用 gettable_event(t,i)。這個函數(shù)并沒有在Lua中定義,也無法調(diào)用。 所有的全局變量存在一個普通的Lua表中,稱之為 環(huán)境變量表(environment tables) 或簡稱 環(huán)境(environments)。Lua寫的每個函數(shù) (a Lua 函數(shù)) 都有一個它自己的環(huán)境的引用,這樣這個函數(shù)中的所有的全局變量都會指向這個環(huán)境變量表。要改變或者獲得Lua函數(shù)的環(huán)境表,可以調(diào)用 setfenv or getfenv (見 )。(_env 變量并沒有在Lua中定義。他包括賦值,控制結(jié)構(gòu),過程調(diào)用,表構(gòu)造和變量聲明。一段語句就是簡單的語句的序列,以順序執(zhí)行。180。這樣,語句段可以定義局部變量或者返回值。當語句段被執(zhí)行時,他首先被預編譯成虛擬機使用的字節(jié)碼,然后虛擬機用一個解釋器執(zhí)行被編譯的代碼。源代碼和編譯形態(tài)可以互相轉(zhuǎn)換;Lua自動監(jiān)測文件類型然后作相應操作。顯示語句塊有時也常會在另一個語句塊的中間添加 return 或 break 語句 (見 )。因此,賦值的語法定義為:等號左邊是一個變量表,右邊是一個表達式表。 explist1 varlist1 ::= var {`,180。 exp}我們將在 討論表達式。如果值比需要的多,多出的值就會被扔掉。如果表達式表以一個函數(shù)調(diào)用結(jié)束,那么在賦值之前,函數(shù)返回的所有的值都會添加到值的表中(除非把函數(shù)調(diào)用放在括號里面;見 )。因為在 a[i] 中的 i 在賦值為4之前是等于3。 對全局變量和表字段的賦值可以看作是通過元表進行的。 (settable_event詳細介紹參看 ,Lua中并未定義該函數(shù),他也無法直接調(diào)用。) 對全局變量的賦值 x = val 等同于賦值語句 = val,像前面也等同于: settable_event(_env, x, val)_env 是運行函數(shù)的環(huán)境。我們這里只是用來進行解釋。 控制結(jié)構(gòu)的條件表達式 exp 可以返回任意值。所有其他的值都認為是真(特別要說明的:數(shù)字0和空字符串也表示真)。函數(shù)和語句段都可以返回多個值,所以 return 語句的語法為: stat ::= return [explist1]break 語句可以用來終止while, repeat 或者 for 循環(huán)的執(zhí)行,直接跳到循環(huán)后面的語句。 由于語法的原因, return 和 break 語句只能作為語句塊的 最后一個 語句。 和 `do break end180。實際上,這兩種用法一般只用在調(diào)試中。 數(shù)值形式的 for 循環(huán)根據(jù)一個控制變量用算術(shù)過程重?匆揮錁淇欏S鋟ㄈ縵攏? stat ::= for Name `=180。 exp [`,180。一個這樣的 for 語句: for var = e1, e2, e3 do block end等價于一下代碼: do local var, _limit, _step = tonumber(e1), tonumber(e2), tonumber(e3) if not (var and _limit and _step) then error() end while (_step0 and var=_limit) or (_step=0 and var=_limit) do block var = var + _step end end注意: 他們的結(jié)果必須是數(shù)值。 _limit 和 _step 是不可見的變量。 如果你需要使用這個值,請在退出循環(huán)之前把它們傳給其他變量。每一個迭代過程,它調(diào)用迭代函數(shù)來產(chǎn)生新的值,直到新的值是 nil 。 Name} in explist1 do block end一個這樣的 for 語句 for var_1, ..., var_n in explist do block end等同于以下代碼: do local _f, _s, var_1 = explist local var_2, ... , var_n while true do var_1, ..., var_n = _f(_s, var_1) if var_1 == nil then break end block end end注意:他的結(jié)果是一個 迭代 函數(shù),一個 狀態(tài),和給第一個 迭代變量的一個初始值。 _f 和 _s 是不可見的變量。 如果你需要使用這個值,請在退出循環(huán)之前把它們傳給其他變量。函數(shù)調(diào)用將在 詳細解釋。聲明時也可以添加一個初始賦值: stat ::= local namelist [`=180。 Name}如果出現(xiàn)初始賦值,他的語法和多重賦值語句一樣(見 )。 一個語句段也是一個語句塊(見 ),所以語句段之內(nèi)的任何顯式語句塊之外也可以聲明局部變量。 局部變量的可見規(guī)則會在 。 exp `)180。 一個用括號括起的表達式只會返回一個值。 表達式也可以使用各種算術(shù)運算符,關(guān)系運算符和邏輯運算符,下面幾節(jié)就會講到。如果操作數(shù)是數(shù)字,或者是可以轉(zhuǎn)換成數(shù)字的字符串(見 ),那么所有的操作都和算術(shù)意義上的運算一致(除了指數(shù))。標準數(shù)學庫定義了函數(shù) __pow,給出了指數(shù)運算的定義(見 )。 等于 (==) 先比較操作數(shù)的類型。否則,再比較操作數(shù)的值。每次你創(chuàng)建一個新的對象(表,用戶數(shù)據(jù),或者是函數(shù))。 你可以用eq元方法改變Lua比較表的方式(見 )。這樣, 0==0 結(jié)果是 false ,同樣 t[0] 和 t[0] 給出的是表中不同的字段。 T操作符的執(zhí)行順序如下。如果,兩個參數(shù)都是字符串,那么它們的值會根據(jù)當前的區(qū)域設(shè)置進行比較。 邏輯運算符Lua中的邏輯運算符是: and or not和控制結(jié)構(gòu)一樣(見 ),所有的邏輯操作符認為 false 和 nil 都是假,其他的值都是真。 合取運算 and 如果第一個參數(shù)是 false 或者 nil 則返回第一個參數(shù);否則 and 返回第二個參數(shù)。 and 和 or 都使用截取計算,也就是,只有有必要的情況下才計算第二個參數(shù)。)。否則,將調(diào)用 concat 元方法(見 )。串聯(lián)接符 (`..180。) 都是右結(jié)合的。 表構(gòu)造器表構(gòu)造器是創(chuàng)建表的表達式。構(gòu)造器可以用來創(chuàng)建空的表,或者創(chuàng)建表并初始化一些字段。 [fieldlist] `}180。 exp `]180。 exp | Name `=180。 | `。[exp1] = exp2 形式的每一個添加到新表中的字段條目以 exp1 為鍵并以 exp2 為值。最后,exp 形式的字段等同于 [i] = exp 其中 i 是連續(xù)的整數(shù),從1開始。例如: a = {[f(1)] = g。 x = 1, f(x), [30] = 23。如果要避免這種情況,在函數(shù)調(diào)用兩邊加上括號(見 )。 函數(shù)調(diào)用Lua中的一個函數(shù)調(diào)用有如下語法: functioncall ::= prefixexp args在函數(shù)調(diào)用中,首先會計算 prefixexp 和 args 。否則,他的 call 元方法就會被調(diào)用,第一個參數(shù)是 prefixexp 的值,接下來是原來的調(diào)用參數(shù)(見 )。 Name args可以用來調(diào)用“方法”(methods)。 參數(shù)可以有以下幾種語法: args ::= `(180。 args ::= tableconstructor args ::= Literal所有的參數(shù)表達式都會在實際調(diào)用之前進行計算。 f39。 (或者 f... 或者 f[[...]]) 較 f(39。) 要好,是因為參數(shù)列表是一個單獨的字符串。如果函數(shù)按照語句進行調(diào)用(見 ),那么它的返回列表就會被調(diào)整為零個元素,這樣就舍棄了所有的返回值。 以下是一些例子: f() 調(diào)整為0個結(jié)果 g(f(), x) f() 被調(diào)整成1個結(jié)果 g(x, f()) g 獲得 x 加上f()返回的所有值 a,b,c = f(), x f() 被調(diào)整成1個結(jié)果(此時c獲得nil值) a,b,c = x, f() f() 被調(diào)整為兩個結(jié)果 a,b,c = f() f() 被調(diào)整為3個結(jié)果 return f() 返回所有 f() 返回的值 return x,y,f() 建立一個表包含所有 f() 返回的值 {f()} creates a list with all values returned by f() {f(), nil} f() 被調(diào)整為一個結(jié)果如果你用括號括起調(diào)用的函數(shù),那么它就會被調(diào)整為返回一個值。 前面加入一個換行。如果你寫: a = f (g).x(a)Lua會讀作 a = f(g).x(a)。如果你實際上想調(diào)用 f,你就必須刪除 (g) 前面的換行。Lua實現(xiàn)了proper tail calls;在一個尾部調(diào)用中,被調(diào)用的函數(shù)將會重新使用調(diào)用程序的棧。然而,尾部調(diào)用會清楚調(diào)用函數(shù)的調(diào)試信息。所以,下面的例子都不是尾部調(diào)用: return (f(x)) results adjusted to 1 return 2 * f(x) return x, f(x) additional results f(x)。 [parlist1] `)180。 Name} [`:180。 f = function () ... end一個函數(shù)定義是一個可執(zhí)行的表達式,他的類型為 函數(shù)(function) 。這樣,當Lua執(zhí)行函數(shù)定義的時候,函數(shù)被 實例化 (封裝 closed)。同一個函數(shù)的不同的實例可以引用不同的外部局部變量也可以有不同的環(huán)境表。 parlist1 ::= namelist [`,180。] parlist1 ::= `...180。變長參數(shù)函數(shù)在其參數(shù)列表最后有三個點 (`...180。 變長參數(shù)函數(shù)不會對參數(shù)列表進行調(diào)整;而是,它把所有的額外實參放到一個隱含的形參 arg中。`n180。2,n是額外的參數(shù)。 n=2} g(5, r()) a=5, b=1, arg={2, 3。如果控制到達了函數(shù)尾部而沒有遇到 return 語句,那么函數(shù)沒有返回值。這樣,語句: function :f (...) ... end相對以下是較好的形式: = function (self, ...) ... end 可見性規(guī)則Lua是一個有詞法范圍的語言。例如: x = 10 global variable do new block local x = x new `x39。 print(x) 12 end print(x) 11 end print(x) 10 (the global one)注意:在類似 local x = x,正在聲明的新的 x 尚未進入范圍,所以第二個 x 指代的是外面的變量。例如: local counter = 0 function inc (x) counter = counter + x return counter end內(nèi)部函數(shù)使用的局部變量在函數(shù)內(nèi)部稱之為 上值(upvalue),或者 外局部變量(external local variable)??匆韵吕樱? a = {} local x = 20 for i=1,10 do local y = 0 a[i] = function () y=y+1。每個閉包使用不同的 y 變量,但他們共享同一個 x 變量。無論錯誤發(fā)生在Lua編譯過程時或執(zhí)行時,控制返回C,然后可以做相應的處理(比如打印一個錯誤)。如果你要在Lua中捕獲錯誤,你可以使用 pcall 函數(shù)(見 )。這個 元表 是一個普通的Lua表,定義了在特定操作下原始表和用戶數(shù)據(jù)的行為。例如,當一個對象是一個加法的操作數(shù)時,Lua檢查它的元表中的 __add 字段是不是一個函數(shù)。 我們稱元表中的鍵(字段名,key)為 事件(events) ,值為
點擊復制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1