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

正文內(nèi)容

lua__參考手冊(cè)docx頁(yè)-資料下載頁(yè)

2024-11-05 08:16本頁(yè)面

【導(dǎo)讀】Lua也能對(duì)面向?qū)ο缶幊?,函?shù)式編程,數(shù)據(jù)驅(qū)動(dòng)式編程提。Lua以一個(gè)用cleanC寫(xiě)成的庫(kù)形式提供。(所謂CleanC,指的ANSIC和。序中工作,這個(gè)宿主程序被稱(chēng)作embeddingprogram或簡(jiǎn)稱(chēng)為host。數(shù)讓Lua代碼調(diào)用。這些擴(kuò)展的C函數(shù),可以大大的擴(kuò)展了Lua可以處理事。務(wù)的領(lǐng)域,這樣就可以訂制出各種語(yǔ)言,而它們共享一個(gè)統(tǒng)一的句法格式的框架。了一個(gè)保證獨(dú)立的Lua解釋器。Lua是一個(gè)自由軟件,它的使用許可決定了對(duì)它的使用過(guò)程一般沒(méi)有任何保證。這份手冊(cè)中描述的東西的實(shí)現(xiàn),可以在Lua的官方網(wǎng)站找到,法的探討,可以看看Lua網(wǎng)站上提供的技術(shù)論文??梢宰x一下Roberto的書(shū),ProgramminginLua。這一節(jié)從詞法、語(yǔ)法、句法上描述Lua。劃線(xiàn)組成的字符串。_VERSION)被保留用于Lua內(nèi)部全局變量。這里,ddd是一串最多三位的十進(jìn)制數(shù)字。)Lua中的字符串可以包含任何8位的值??梢詴?huì)影響文件系統(tǒng)造成某些問(wèn)題,但是不會(huì)引起Lua的任何問(wèn)題。Lua也支持十六進(jìn)制整數(shù)常量,只需要在前面加上前綴0x。Lua是一種動(dòng)態(tài)類(lèi)型語(yǔ)言。Lua中的所有值都是一致的。

  

【正文】 al mm2 = metatable(op2)[event] ? if mm1 == mm2 then return mm1 else return nil end ? end eq 事件按如下方式定義: function eq_event (op1, op2) if type(op1) ~= type(op2) then 不同的類(lèi)型? return false 不同的對(duì)象 end if op1 == op2 then 原生的相等比較結(jié)果? return true 對(duì)象相等 end 嘗試使用元方法 local h = getphandler(op1, op2, __eq) if h then return h(op1, op2) else return false end end a ~= b 等價(jià)于 not (a == b) 。 ? lt: 操作。 ? function lt_event (op1, op2) ? if type(op1) == number and type(op2) == number then ? return op1 op2 數(shù)字比較 ? elseif type(op1) == string and type(op2) == string then ? return op1 op2 字符串按逐字符比較 ? else ? local h = getphandler(op1, op2, __lt) ? if h then ? return h(op1, op2) ? else ? error()。 ? end ? end ? end a b 等價(jià)于 b a. ? le: = 操作。 ? function le_event (op1, op2) ? if type(op1) == number and type(op2) == number then ? return op1 = op2 數(shù)字比較 ? elseif type(op1) == string and type(op2) == string then ? return op1 = op2 字符串按逐字符比較 ? else ? local h = getphandler(op1, op2, __le) ? if h then ? return h(op1, op2) ? else ? h = getphandler(op1, op2, __lt) ? if h then ? return not h(op2, op1) ? else ? error()。 ? end ? end ? end ? end a = b 等價(jià)于 b = a 。注意,如果元方法 le 沒(méi)有提供, Lua 就嘗試 lt ,它假定 a = b 等價(jià)于 not (b a) 。 ? index: 取下標(biāo)操作用于訪(fǎng)問(wèn) table[key] 。 ? function gettable_event (table, key) ? local h ? if type(table) == table then ? local v = rawget(table, key) ? if v ~= nil then return v end ? h = metatable(table).__index ? if h == nil then return nil end ? else ? h = metatable(table).__index ? if h == nil then ? error()。 ? end ? end ? if type(h) == function then ? return h(table, key) 調(diào)用處理器 ? else return h[key] 或是重復(fù)上述操作 ? end ? end ? newindex: 賦值給指定下標(biāo) table[key] = value 。 ? function settable_event (table, key, value) ? local h ? if type(table) == table then ? local v = rawget(table, key) ? if v ~= nil then rawset(table, key, value)。 return end ? h = metatable(table).__newindex ? if h == nil then rawset(table, key, value)。 return end ? else ? h = metatable(table).__newindex ? if h == nil then ? error()。 ? end ? end ? if type(h) == function then ? return h(table, key,value) 調(diào)用處理器 ? else h[key] = value 或是重復(fù)上述操作 ? end ? end ? call: 當(dāng) Lua 調(diào)用一個(gè)值時(shí)調(diào)用。 ? function function_event (func, ...) ? if type(func) == function then ? return func(...) 原生的調(diào)用 ? else ? local h = metatable(func).__call ? if h then ? return h(func, ...) ? else ? error() ? end ? end ? end 環(huán)境 類(lèi)型為 thread , function ,以及 userdata 的對(duì)象,除了 metatable 外還可以用另外一個(gè)與之關(guān)聯(lián)的被稱(chēng)作它們的環(huán)境的一個(gè)表,像 metatable 一樣,環(huán)境也是一個(gè)常規(guī)的 table , 多個(gè)對(duì)象可以共享同一個(gè)環(huán)境。 userdata 的環(huán)境在 Lua 中沒(méi)有意義。這個(gè)東西只是為了在程序員想把一個(gè)表關(guān)聯(lián)到一個(gè) userdata 上時(shí)提供便利。 關(guān)聯(lián)在線(xiàn)程上的環(huán)境被稱(chēng)作全局環(huán)境。全局環(huán)境被用作它其中的線(xiàn)程以及線(xiàn)程創(chuàng)建的非嵌套函數(shù)(通過(guò) loadfile , loadstring 或是 load )的缺省環(huán)境。而且它可以被 C 代碼直接訪(fǎng)問(wèn)(參見(jiàn) 167。 )。 關(guān)聯(lián)在 C 函數(shù)上的環(huán)境可以直接被 C 代碼訪(fǎng)問(wèn)(參見(jiàn) 167。 )。它們會(huì)作為這個(gè) C 函數(shù)中創(chuàng)建的其它函數(shù)的缺省環(huán)境。 關(guān)聯(lián)在 Lua 函數(shù)上的環(huán)境用來(lái)接管在函數(shù)內(nèi)對(duì)全局變量(參見(jiàn) 167。 )的所有訪(fǎng)問(wèn)。它們也會(huì)作為這個(gè)函數(shù)內(nèi)創(chuàng)建的其它函數(shù)的缺省環(huán)境。 你可以通過(guò)調(diào)用 setfenv 來(lái)改變一個(gè) Lua 函數(shù)或是正在運(yùn)行中的線(xiàn)程的環(huán)境。而想操控其它對(duì) 象( userdata、 C 函數(shù)、其它線(xiàn)程)的環(huán)境的話(huà),就必須使用 C API 。 垃圾收集 Lua 提供了一個(gè)自動(dòng)的內(nèi)存管理。這就是說(shuō)你不需要關(guān)心創(chuàng)建新對(duì)象的分配內(nèi)存操作,也不需要在這些對(duì)象不再需要時(shí)的主動(dòng)釋放內(nèi)存。 Lua 通過(guò)運(yùn)行一個(gè)垃圾收集器來(lái)自動(dòng)管理內(nèi)存,以此一遍又一遍的回收死掉的對(duì)象(這是指 Lua 中不再訪(fǎng)問(wèn)的到的對(duì)象)占用的內(nèi)存。 Lua 中所有對(duì)象都被自動(dòng)管理,包括: table, userdata、 函數(shù)、線(xiàn)程、和字符串。 Lua 實(shí)現(xiàn)了一個(gè)增量標(biāo)記清除的收集器。它用兩個(gè) 數(shù)字來(lái)控制垃圾收集周期: garbagecollector pause 和 garbagecollector step multiplier 。 garbagecollector pause 控制了收集器在開(kāi)始一個(gè)新的收集周期之前要等待多久。隨著數(shù)字的增大就導(dǎo)致收集器工作工作的不那么主動(dòng)。小于 1 的值意味著收集器在新的周期開(kāi)始時(shí)不再等待。當(dāng)值為 2 的時(shí)候意味著在總使用內(nèi)存數(shù)量達(dá)到原來(lái)的兩倍時(shí)再開(kāi)啟新的周期。 step multiplier 控制了收集器相對(duì)內(nèi)存分配的速度。更大的數(shù)字將導(dǎo)致收集器工作的更主動(dòng)的同時(shí),也使每步收集的尺寸增加。小于 1 的值會(huì)使收集器工作的非常慢,可能導(dǎo)致收集器永遠(yuǎn)都結(jié)束不了當(dāng)前周期。缺省值為 2 ,這意味著收集器將以?xún)?nèi)存分配器的兩倍速運(yùn)行。 你可以通過(guò)在 C 中調(diào)用 lua_gc 或是在 Lua 中調(diào)用 collectgarbage 來(lái)改變這些數(shù)字。兩者都接受百分比數(shù)值(因此傳入?yún)?shù) 100 意味著實(shí)際值 1 )。通過(guò)這些函數(shù),你也可以直接控制收集器(例如,停止或是重啟)。 垃圾收集的元方法 使用 C API ,你可以給 userdata (參見(jiàn) 167。 )設(shè)置一個(gè)垃圾收集的元方法。這個(gè)元方法也被稱(chēng)為結(jié)束子。結(jié)束子允許你用額外的資源管理器和 Lua 的內(nèi)存管理器協(xié)同工作(比如關(guān)閉文件、網(wǎng)絡(luò)連接、或是數(shù)據(jù)庫(kù)連接,也可以說(shuō)釋放你自己的內(nèi)存)。 一個(gè) userdata 可被回收,若它的 metatable 中有 __gc 這個(gè)域 ,垃圾收集器就不立即收回它。取而代之的是, Lua 把它們放到一個(gè)列表中。最收集結(jié)束后,Lua 針對(duì)列表中的每個(gè) userdata 執(zhí)行了下面這個(gè)函數(shù)的等價(jià)操作: function gc_event (udata) local h = metatable(udata).__gc if h then h(udata) end end 在每個(gè)垃圾收集周期的結(jié)尾,每個(gè)在當(dāng)前周期被收集起來(lái)的 userdata 的結(jié)束子會(huì)以它們構(gòu)造時(shí)的逆序依次調(diào)用。也就是說(shuō),收集列表中,最后一個(gè)在程序中被創(chuàng)建的 userdata 的結(jié)束子會(huì)被第一個(gè)調(diào)用。 Weak Table(弱表) weak table 是一個(gè)這樣的 table,它其中的元素都被弱引用。弱引用將被垃圾收集器忽略掉,換句話(huà)說(shuō),如果對(duì)一個(gè)對(duì)象的引用只有弱引用,垃圾收集器將回收這個(gè)對(duì)象。 weak table 的鍵和值都可以是 weak 的。如果一個(gè) table 只有鍵是 weak 的,那么將運(yùn)行收集器回收它們的鍵,但是會(huì)阻止回收器回收對(duì)應(yīng)的值。而一個(gè) table 的鍵和值都是 weak 時(shí),就即允許收集器回收鍵又允許收回值。任何情況下,如果鍵和值中任一個(gè)被回收了,整個(gè)鍵值對(duì)就會(huì)從 table 中拿掉。 table 的 weak 特性可以通過(guò)在它的 metatable 中設(shè)置 __mode 域來(lái)改變。如果 __mode 域中是一個(gè)包含有字符 39。k39。 的字符串時(shí), table 的鍵就是 weak 的。如果 __mode 域中是一個(gè)包含有字符 39。v39。 的字符串時(shí), table 的值就是 weak 的。 在你把一個(gè) table 當(dāng)作一個(gè) metatable 使用之后,就不能再修改 __mode 域的值。否則,受這個(gè) metatable 控制的 table 的 weak 行為就成了未定義的。 Coroutine (協(xié)同例程 ) Lua 支持 coroutine ,這個(gè)東西也被稱(chēng)為協(xié)同式多線(xiàn)程 (co
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1