锘??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美日韩久久精品,亚洲激情图片小说视频,欧美一区影院http://m.shnenglu.com/swo2006/category/3195.htmlzh-cnFri, 23 May 2008 01:09:47 GMTFri, 23 May 2008 01:09:47 GMT60灝嗗瓧絎︿覆鎸夆滐紝鈥濆垎鍓?lua鍑芥暟)http://m.shnenglu.com/swo2006/articles/16000.htmlswoswoTue, 05 Dec 2006 02:10:00 GMThttp://m.shnenglu.com/swo2006/articles/16000.htmlhttp://m.shnenglu.com/swo2006/comments/16000.htmlhttp://m.shnenglu.com/swo2006/articles/16000.html#Feedback0http://m.shnenglu.com/swo2006/comments/commentRss/16000.htmlhttp://m.shnenglu.com/swo2006/services/trackbacks/16000.html
This is intended to do the reverse of table.concat. That is, it takes a string and generates a table of entries, delimited by single-character delimiters (such as comma or newline).

Example:


test = "the,quick,brown,dog,jumped"

t = utils.split (test, ",")

tprint (t)

print (table.concat (t, ","))

Output:

1="the"
2="quick"
3="brown"
4="dog"
5="jumped"

the,quick,brown,dog,jumped


You pass utils.split 2 or 3 arguments:


  1. The string to be split

  2. The single-character delimiter

  3. (optional) the maximum number of splits to do



If the 3rd argument is not supplied, or is zero, then the entire string is split. Otherwise, it will be split the number of times you specify. eg.


t = utils.split (test, ",", 2)

tprint (t)

Output:

1="the"
2="quick"
3="brown,dog,jumped"


In this case the remaining text is placed in the 3rd table item.


static int l_split (lua_State *L) {
const char *s = luaL_checkstring(L, 1);
const char *sep = luaL_checkstring(L, 2);
const int count = (int) luaL_optnumber (L, 3, 0);
char *e;
int i = 1;

if (strlen (sep) != 1)
luaL_error (L, "Separator must be a single character");

if (count < 0)
luaL_error (L, "Count must be positive or zero");

lua_newtable(L); /* result */

/* repeat for each separator */
while ((e = strchr(s, *sep)) != NULL &&
(count == 0 || i <= count))
{
lua_pushlstring(L, s, e-s); /* push substring */
lua_rawseti(L, -2, i++);
s = e + 1; /* skip separator */
}

/* push last substring */
lua_pushstring(L, s);
lua_rawseti(L, -2, i);

return 1; /* return the table */
}

function split (s, delim)

assert (type (delim) == "string" and string.len (delim) > 0,
"bad delimiter")

local start = 1
local t = {} -- results table

-- find each instance of a string followed by the delimiter

while true do
local pos = string.find (s, delim, start, true) -- plain find

if not pos then
break
end

table.insert (t, string.sub (s, start, pos - 1))
start = pos + string.len (delim)
end -- while

-- insert final one (after last delimiter)

table.insert (t, string.sub (s, start))

return t

end -- function split


swo 2006-12-05 10:10 鍙戣〃璇勮
]]>
Lua鐨勫浠誨姟鏈哄埗鈥斺斿崗紼?coroutine) http://m.shnenglu.com/swo2006/articles/15781.htmlswoswoWed, 29 Nov 2006 06:30:00 GMThttp://m.shnenglu.com/swo2006/articles/15781.htmlhttp://m.shnenglu.com/swo2006/comments/15781.htmlhttp://m.shnenglu.com/swo2006/articles/15781.html#Feedback0http://m.shnenglu.com/swo2006/comments/commentRss/15781.htmlhttp://m.shnenglu.com/swo2006/services/trackbacks/15781.html銆銆銆銆鍗忕▼(coroutine)鎶鏈槸涓縐嶇▼搴忔帶鍒舵満鍒訛紝鏃╁湪涓婁笘綰?0騫翠唬灝卞凡 鎻愬嚭錛岀敤瀹冨彲浠ュ緢鏂逛究鍦板疄鐜板崗浣滃紡澶氫換鍔°傚湪涓繪祦鐨勭▼搴忚璦(濡侰++銆丣ava銆丳ascal絳?閲屾垜浠緢灝戣兘鐪嬪埌鍗忕▼鐨勮韓褰憋紝浣嗘槸鐜板湪涓嶅皯鍔ㄦ佽剼鏈 璦(Python銆丳erl)鍗撮兘鎻愪緵浜嗗崗紼嬫垨涓庝箣鐩鎬技鐨勬満鍒訛紝鍏朵腑鏈紿佸嚭鐨勪究鏄疞ua銆?br />銆銆
銆銆銆銆Lua璇█瀹炵幇鐨勫崗紼嬫槸涓縐嶉潪瀵圭О 寮?asymmetric)鍗忕▼錛屾垨縐板崐瀵圭О寮?semi-asymmetric)鍗忕▼錛屽張鎴栧共鑴嗗氨鍙崐鍗忕▼(semi-coroutine)銆傝繖縐嶅崗紼? 鏈哄埗涔嬫墍浠ヨ縐頒負(fù)闈炲縐扮殑錛屾槸鍥犱負(fù)瀹冩彁渚涗簡涓ょ浼犻掔▼搴忔帶鍒舵潈鐨勬搷浣滐細(xì)涓縐嶆槸(閲?璋冪敤鍗忕▼(閫氳繃coroutine.resume)錛涘彟涓縐嶆槸鎸傝搗鍗忕▼ 騫跺皢紼嬪簭鎺у埗鏉冭繑鍥炵粰鍗忕▼鐨勮皟鐢ㄨ?閫氳繃coroutine.yield)銆備竴涓潪瀵圭О鍗忕▼鍙互鐪嬪仛鏄粠灞炰簬瀹冪殑璋冪敤鑰呯殑錛屼簩鑰呯殑鍏崇郴闈炲父綾諱技浜庝緥紼? (routine)涓庡叾璋冪敤鑰呬箣闂寸殑鍏崇郴銆傛棦鐒舵湁闈炲縐板紡鍗忕▼錛屽綋鐒朵篃灝辨湁瀵圭О寮?symmetric)鍗忕▼浜嗭紝瀹冪殑鐗圭偣鏄彧鏈変竴縐嶄紶閫掔▼搴忔帶鍒舵潈鐨勬搷 浣滐紝鍗沖皢鎺у埗鏉冪洿鎺ヤ紶閫掔粰鎸囧畾鐨勫崗紼嬨傛浘緇忔湁榪欎箞涓縐嶈娉曪紝瀵圭О寮忓拰闈炲縐板紡鍗忕▼鏈哄埗鐨勮兘鍔涘茍涓嶇瓑浠鳳紝浣嗕簨瀹炰笂寰堝鏄撴牴鎹墠鑰呮潵瀹炵幇鍚庤呫傛帴涓嬫潵鎴戜滑灝辯敤 浠g爜鏉ヨ瘉鏄庤繖涓簨瀹炪?br />銆銆
銆銆--瀵圭О寮忓崗紼嬪簱coro.lua
銆銆
銆銆coro = {}
銆銆--coro.main鐢ㄦ潵鏍囪瘑紼嬪簭鐨勪富鍑芥暟
銆銆coro.main = function() end
銆銆-- coro.current鍙橀噺鐢ㄦ潵鏍囪瘑鎷ユ湁鎺у埗鏉冪殑鍗忕▼錛?br />銆銆-- 涔熷嵆姝e湪榪愯鐨勫綋鍓嶅崗紼?br />銆銆coro.current = coro.main
銆銆
銆銆-- 鍒涘緩涓涓柊鐨勫崗紼?br />銆銆function coro.create(f)
銆銆銆 return coroutine.wrap(function(val)
銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆return nil,f(val)
銆銆銆銆銆銆銆銆銆銆銆銆銆銆 end)
銆銆end
銆銆
銆銆-- 鎶婃帶鍒舵潈鍙?qiáng)鎸囧畾鐨勬暟鎹畍al浼犵粰鍗忕▼k
銆銆function coro.transfer(k,val)
銆銆銆 if coro.current ~= coro.main then
銆銆銆銆銆return coroutine.yield(k,val)
銆銆銆 else
銆銆銆銆銆-- 鎺у埗鏉冨垎媧懼驚鐜?br />銆銆銆銆銆while k do
銆銆銆銆銆銆 coro.current = k
銆銆銆銆銆銆 if k == coro.main then
銆銆銆銆銆銆銆銆return val
銆銆銆銆銆銆 end
銆銆銆銆銆銆 k,val = k(val)
銆銆銆銆銆end
銆銆銆銆銆error("coroutine ended without transfering control...")
銆銆銆 end
銆銆end
銆銆
銆銆濡傛灉鏆傛椂榪樺紕涓嶆噦涓婇潰鐨勭▼搴忥紝娌″叧緋伙紝鐪嬬湅濡備綍浣跨敤榪欎釜搴撳悗鍐嶅洖澶村垎鏋愩備笅闈㈡槸浣跨敤紺轟緥錛?br />銆銆
銆銆require("coro.lua")
銆銆
銆銆function foo1(n)
銆銆銆 print("1: foo1 received value "..n)
銆銆銆 n = coro.transfer(foo2,n + 10)
銆銆銆 print("2: foo1 received value "..n)
銆銆銆 n = coro.transfer(coro.main,n + 10)
銆銆銆 print("3: foo1 received value "..n)
銆銆銆 coro.transfer(coro.main,n + 10)
銆銆end
銆銆
銆銆function foo2(n)
銆銆銆 print("1: foo2 received value "..n)
銆銆銆 n = coro.transfer(coro.main,n + 10)
銆銆銆 print("2: foo2 received value "..n)
銆銆銆 coro.transfer(foo1,n + 10)
銆銆end
銆銆
銆銆function main()
銆銆銆 foo1 = coro.create(foo1)
銆銆銆 foo2 = coro.create(foo2)
銆銆銆 local n = coro.transfer(foo1,0)
銆銆銆 print("1: main received value "..n)
銆銆銆 n = coro.transfer(foo2,n + 10)
銆銆銆 print("2: main received value "..n)
銆銆銆 n = coro.transfer(foo1,n + 10)
銆銆銆 print("3: main received value "..n)
銆銆end
銆銆
銆銆--鎶妋ain璁句負(fù)涓誨嚱鏁?鍗忕▼)
銆銆coro.main = main
銆銆--灝哻oro.main璁句負(fù)褰撳墠鍗忕▼
銆銆coro.current = coro.main
銆銆--寮濮嬫墽琛屼富鍑芥暟(鍗忕▼)
銆銆coro.main()
銆銆
銆銆
銆 銆涓婇潰鐨勭ず渚嬪畾涔変簡涓涓悕涓簃ain鐨勪富鍑芥暟錛屾暣涓▼搴忕敱瀹冭屽錛屼篃鍥犲畠鑰岀粓銆備負(fù)浠涔堥渶瑕佷竴涓繖鏍風(fēng)殑涓誨嚱鏁板憿錛熶笂闈㈣浜嗭紝紼嬪簭鎺у埗鏉冨彲浠ュ湪瀵圭О寮忓崗紼嬩箣闂? 鑷敱鍦扮洿鎺ヤ紶閫掞紝瀹冧滑涔嬮棿鏃犳墍璋撹皝浠庡睘浜庤皝鐨勯棶棰橈紝閮藉浜庡悓涓涓眰綰э紝浣嗘槸搴旂敤紼嬪簭蹇呴』鏈変竴涓紑濮嬬偣錛屾墍浠ユ垜浠畾涔変竴涓富鍑芥暟錛岃瀹冪偣鐕冪▼搴忚繍琛岀殑瀵肩伀 綰褲傝櫧璇村悇涓崗紼嬮兘鏄鉤絳夌殑錛屼絾鍋氫負(fù)紼嬪簭榪愯鍘熷姩鍔涚殑涓誨嚱鏁頒粛鐒朵韓鏈夌壒孌婄殑鍦頒綅(榪欎釜涓栦笂鍝湁緇濆鐨勫鉤絳夛紒)錛屼負(fù)姝ゆ垜浠殑搴撲笓闂ㄧ敤浜嗕竴涓? coro.main鍙橀噺鏉ヤ繚瀛樹富鍑芥暟錛屽茍涓斿湪瀹冩墽琛屼箣鍓嶈灝嗗畠璁句負(fù)褰撳墠鍗忕▼(铏界劧涓婇潰鐨刴ain瀹為檯鍙槸涓涓櫘閫氬嚱鏁拌岄潪涓涓湡姝g殑鍗忕▼錛屼絾榪欏茍鏃犲お澶х殑 鍏崇郴錛屼互鍚庝富鍑芥暟涔熻縐頒負(fù)涓誨崗紼?銆傜ず渚嬭繍琛岀殑緇撴灉鏄細(xì)
銆銆
銆銆1: foo1 received value 0
銆銆1: foo2 received value 10
銆銆1: main received value 20
銆銆2: foo2 received value 30
銆銆2: foo1 received value 40
銆銆2: main received value 50
銆銆3: foo1 received value 60
銆銆3: main received value 70
銆銆
銆銆鍗忕▼鐨勬墽琛屽簭鍒楁槸錛歮ain->foo1->foo2->main->foo2->foo1->main->foo1->main銆?br />銆銆
銆 銆銆銆coro.transfer(k,val)鍑芥暟涓璳鏄皢瑕佹帴鏀剁▼搴忔帶鍒舵潈鐨勫崗紼嬶紝鑰寁al鏄紶閫掔粰k鐨勬暟鎹傚鏋滃綋鍓嶅崗紼嬩笉鏄富鍗忕▼錛? tansfer(k,val)灝辯畝鍗曞湴鍒╃敤coroutine.yield(k,val)灝嗗綋鍓嶅崗紼嬫寕璧峰茍浼犲洖涓ら」鏁版嵁錛屽嵆紼嬪簭鎺у埗鏉冪殑涓嬩竴绔欏拰浼犻掔粰瀹? 鐨勬暟鎹紱鍚﹀垯榪涘叆涓涓帶鍒舵潈鍒嗘淳(dispatch)寰幆錛岃寰幆(閲?鍚姩(resume)k鍗忕▼錛岀瓑寰呭畠鎵ц鍒版寕璧?suspend)錛屽茍鏍規(guī)嵁姝ゆ椂鍗? 紼嬩紶鍥炵殑鏁版嵁鏉ュ喅瀹氫笅涓涓(閲?鍚姩鐨勫崗紼嬨備粠搴旂敤紺轟緥鏉ョ湅錛屽崗紼嬩笌鍗忕▼涔嬮棿浼間箮鏄敤transfer鐩存帴浼犻掓帶鍒舵潈鐨勶紝浣嗗疄闄呬笂榪欎釜浼犻掕繕鏄氳繃浜嗕富 鍗忕▼銆傛瘡涓涓湪涓誨崗紼嬮噷琚皟鐢?姣旇緝coro.current鍜宑oro.main鏄惁鐩稿悓鍗沖彲鍒ゆ柇鍑?鐨則ransfer閮界浉褰撲簬涓涓崗紼嬬鐞嗗櫒錛屽畠涓? 鏂湴(閲?鍚姩涓涓崗紼嬶紝灝嗘帶鍒舵潈浜ゅ嚭鍘伙紝鐒跺悗絳夐偅涓崗紼嬫寕璧鋒椂鍙堝皢鎺у埗鏉冩敹鍥烇紝鐒跺悗鍐?閲?鍚姩涓嬩竴涓崗紼?..錛岃繖涓姩浣滀笉浼?xì)鍋滄锛岄櫎闈?lt; 1>灝?閲?鍚姩鐨勫崗紼嬫槸涓誨崗紼嬶紱<2>鏌愪釜鍗忕▼娌℃湁鎻愪緵鎺у埗鏉冪殑涓嬩竴涓洰鐨勫湴銆傚緢鏄劇劧錛屾瘡涓杞垎媧懼驚鐜紑濮嬫椂閮界敱涓誨崗紼嬫妸鎻℃帶鍒舵潈錛? 鍦ㄥ驚鐜繃紼嬩腑濡傛灉鎺у埗鏉冪殑涓嬩竴绔欏張鏄富鍗忕▼鐨勮瘽灝辨剰鍛崇潃榪欎釜褰撳垵鎶婃帶鍒舵潈浜ゅ嚭鍘葷殑涓誨崗紼媡ransfer鎿嶄綔搴旇緇撴潫浜嗭紝鎵浠ュ嚱鏁扮洿鎺ヨ繑鍥瀡al浠庤岀粨鏉? 榪欒疆寰幆銆傚浜庢儏鍐?lt;2>錛屽洜涓篶oro.create(f)鍒涘緩鐨勫崗紼嬬殑浣撳嚱鏁?body function)瀹為檯鏄痜unction(val) return nil,f(val) end錛屾墍浠ュ綋鍑芥暟f鐨勬渶鍚庝竴鏉℃寚浠や笉鏄痶ransfer鏃訛紝榪欎釜鍗忕▼緇堝皢鎵ц瀹屾瘯騫舵妸nil鍜屽嚱鏁癴鐨勮繑鍥炲間竴璧瘋繑鍥炪傚鏋渒鏄繖鏍風(fēng)殑鍗忕▼錛? transfer鎵ц瀹宬,val = k(val)璇彞鍚巏鍊煎氨鎴愪簡nil錛岃繖琚涓轟竴涓敊璇紝鍥犱負(fù)紼嬪簭姝ゆ椂娌℃硶紜畾涓嬩竴涓簲璇?閲?鍚姩鐨勫崗紼嬪埌搴曟槸璋併傛墍浠ュ湪瀵圭О寮忔ā鍨嬩笅錛屾瘡涓涓崗紼?褰? 鐒朵富鍗忕▼鍑哄)鏈鍚庨兘蹇呴』鏄懼紡鍦板皢鎺у埗鏉冧紶閫掔粰鍏跺畠鐨勫崗紼嬨傛牴鎹互涓婂垎鏋愶紝搴旂敤紺轟緥鐨勬帶鍒舵潈鐨勫垎媧懼簲涓猴細(xì)
銆銆
銆銆絎竴杞垎媧? main->foo1->main->foo2->main->main(緇撴潫)
銆銆絎簩杞垎媧? main->foo2->main->foo1->main->main(緇撴潫)
銆銆絎笁杞垎媧? main->foo1->main->main(緇撴潫)
銆銆
銆 銆銆銆鐢變簬鍙互鐩存帴鎸囧畾鎺у埗鏉冧紶閫掔殑鐩爣錛屽縐板紡鍗忕▼鏈哄埗鎷ユ湁鏋佸ぇ鐨勮嚜鐢憋紝浣嗗緱鍒拌繖縐嶈嚜鐢辯殑浠d環(huán)鍗存槸鐗虹壊紼嬪簭緇撴瀯銆傚鏋滅▼搴忕◢寰鏉備竴鐐癸紝閭d箞鍗充嬌鏄潪甯? 鏈夌粡楠岀殑紼嬪簭鍛樹篃寰堥毦瀵圭▼搴忔祦紼嬫湁鍏ㄩ潰鑰屾竻鏅扮殑鎶婃彙銆傝繖闈炲父綾諱技goto璇彞錛屽畠鑳借紼嬪簭璺寵漿鍒頒換浣曟兂鍘葷殑鍦版柟錛屼絾浜轟滑鍗村緢闅劇悊瑙e厖鏂ョ潃goto鐨勭▼搴忋? 闈炲縐板紡鍗忕▼鍏鋒湁鑹ソ鐨勫眰嬈″寲緇撴瀯鍏崇郴錛?閲?鍚姩榪欎簺鍗忕▼涓庤皟鐢ㄤ竴涓嚱鏁伴潪甯哥被浼鹼細(xì)琚?閲?鍚姩鐨勫崗紼嬪緱鍒版帶鍒舵潈寮濮嬫墽琛岋紝鐒跺悗鎸傝搗(鎴栫粨鏉?騫跺皢鎺у埗 鏉冭繑鍥炵粰鍗忕▼璋冪敤鑰咃紝榪欎笌璁$畻鏈哄厛鍝蹭滑鍊″鐨勭粨鏋勫寲緙栫▼椋庢牸瀹屽叏涓鑷淬?br />銆銆
銆銆銆銆緇間笂鎵榪幫紝Lua鎻愪緵鐨勯潪瀵圭О寮忓崗紼嬩笉浣嗗叿鏈変笌瀵圭О寮忓崗紼嬩竴鏍峰己澶х殑鑳藉姏錛岃屼笖榪樿兘閬垮厤紼嬪簭鍛樻互鐢ㄦ満鍒跺啓鍑虹粨鏋勬販涔辯殑紼嬪簭銆?img src ="http://m.shnenglu.com/swo2006/aggbug/15781.html" width = "1" height = "1" />

swo 2006-11-29 14:30 鍙戣〃璇勮
]]>
fuction(lua)http://m.shnenglu.com/swo2006/articles/15732.htmlswoswoTue, 28 Nov 2006 06:43:00 GMThttp://m.shnenglu.com/swo2006/articles/15732.htmlhttp://m.shnenglu.com/swo2006/comments/15732.htmlhttp://m.shnenglu.com/swo2006/articles/15732.html#Feedback0http://m.shnenglu.com/swo2006/comments/commentRss/15732.htmlhttp://m.shnenglu.com/swo2006/services/trackbacks/15732.htmlLua涓殑鍑芥暟鏄竴闃剁被鍨嬪?first-class value)錛屽畾涔夊嚱鏁板氨璞″垱寤烘櫘閫氱被鍨嬪間竴鏍?鍙笉榪囧嚱鏁扮被鍨?/font> 鍊肩殑鏁版嵁涓昏鏄竴鏉℃潯鎸囦護(hù)鑰屽凡)錛屾墍浠ュ湪鍑芥暟浣撲腑浠嶇劧鍙互瀹氫箟鍑芥暟銆傚亣璁懼嚱鏁癴2瀹氫箟鍦ㄥ嚱鏁癴1涓紝閭d箞灝辯О f2涓篺1鐨勫唴宓?inner)鍑芥暟錛宖1涓篺2鐨勫鍖?enclosing)鍑芥暟錛屽鍖呭拰鍐呭祵閮藉叿鏈変紶閫掓э紝鍗砯2鐨勫唴宓屽繀鐒舵槸 f1鐨勫唴宓岋紝鑰宖1鐨勫鍖呬篃涓瀹氭槸f2鐨勫鍖呫傚唴宓屽嚱鏁板彲浠ヨ闂鍖呭嚱鏁板凡緇忓垱寤虹殑鎵鏈夊眬閮ㄥ彉閲忥紝榪欑鐗規(guī)т究鏄?/font> 鎵璋撶殑璇嶆硶瀹氱晫(lexical scoping)錛岃岃繖浜涘眬閮ㄥ彉閲忓垯縐頒負(fù)璇ュ唴宓屽嚱鏁扮殑澶栭儴灞閮ㄥ彉閲?external local variable)鎴栬卽pvalue(榪欎釜璇嶅灝戜細(xì)璁╀漢浜х敓璇В錛屽洜涓簎pvalue瀹為檯鎸囩殑鏄彉閲忚屼笉鏄?銆傝瘯鐪嬪涓嬩唬 鐮侊細(xì)

function f1(n)
聽聽 -- 鍑芥暟鍙傛暟涔熸槸灞閮ㄥ彉閲?/font>

聽聽 local function f2()
聽聽聽聽聽 print(n) -- 寮曠敤澶栧寘鍑芥暟鐨勫眬閮ㄥ彉閲?/font>
聽聽 end
聽聽 return f2
end

g1 = f1(1979)
g1() -- 鎵撳嵃鍑?979
g2 = f1(500)
g2() -- 鎵撳嵃鍑?00

褰撴墽琛屽畬g1 = f1(1979)鍚庯紝灞閮ㄥ彉閲弉鐨勭敓鍛芥湰璇ョ粨鏉燂紝浣嗗洜涓哄畠宸茬粡鎴愪簡鍐呭祵鍑芥暟f2(瀹冨張琚祴緇欎簡鍙橀噺 g1)鐨剈pvalue錛屾墍浠ュ畠浠嶇劧鑳戒互鏌愮褰㈠紡緇х畫鈥滃瓨?gòu)z燴濅笅鏉ワ紝浠庤屼護(hù)g1()鎵撳嵃鍑烘紜殑鍊箋?/font>

聽聽聽 鍙負(fù)浠涔坓2涓巊1鐨勫嚱鏁頒綋涓鏍?閮芥槸f1鐨勫唴宓屽嚱鏁癴2鐨勫嚱鏁頒綋)錛屼絾鎵撳嵃鍊間笉鍚岋紵榪欏氨娑夊強(qiáng)鍒頒竴涓浉褰撻噸瑕?/font> 鐨勬蹇碘斺旈棴鍖?closure)銆備簨瀹炰笂錛孡ua緙栬瘧涓涓嚱鏁版椂錛屼細(xì)涓哄畠鐢熸垚涓涓師鍨?prototype)錛屽叾涓寘鍚簡 鍑芥暟浣撳搴旂殑铏氭嫙鏈烘寚浠ゃ佸嚱鏁扮敤鍒扮殑甯擱噺鍊?鏁幫紝鏂囨湰瀛楃涓茬瓑絳?鍜屼竴浜涜皟璇曚俊鎭傚湪榪愯鏃訛紝姣忓綋Lua鎵ц 涓涓艦濡俧unction...end 榪欐牱鐨勮〃杈懼紡鏃訛紝瀹冨氨浼?xì)鍒涘晦Z竴涓柊鐨勬暟鎹璞★紝鍏朵腑鍖呭惈浜嗙浉搴斿嚱鏁板師鍨嬬殑寮曠敤 銆佺幆澧?environment錛岀敤鏉ユ煡鎵懼叏灞鍙橀噺鐨勮〃)鐨勫紩鐢ㄤ互鍙?qiáng)涓涓敱鎵鏈塽pvalue寮曠敤緇勬垚鐨勬暟緇勶紝鑰岃繖涓暟鎹?/font> 瀵硅薄灝辯О涓洪棴鍖呫傜敱姝ゅ彲瑙侊紝鍑芥暟鏄紪璇戞湡姒傚康錛屾槸闈欐佺殑錛岃岄棴鍖呮槸榪愯鏈熸蹇碉紝鏄姩鎬佺殑銆俫1鍜実2鐨勫間弗鏍?/font> 鏉ヨ涓嶆槸鍑芥暟鑰屾槸闂寘錛屽茍涓旀槸涓や釜涓嶇浉鍚岀殑闂寘錛岃屾瘡涓棴鍖呭彲浠ヤ繚鏈夎嚜宸辯殑upvalue鍊鹼紝鎵浠1鍜実2鎵撳嵃鍑?/font> 鐨勭粨鏋滃綋鐒跺氨涓嶄竴鏍蜂簡銆傝櫧鐒墮棴鍖呭拰鍑芥暟鏄湰璐ㄤ笉鍚岀殑姒傚康錛屼絾涓轟簡鏂逛究錛屼笖鍦ㄤ笉寮曡搗娣鋒穯鐨勬儏鍐典笅錛屾垜浠瀹?/font> 浠笉鍋氬尯鍒嗐?/font>

聽聽聽 浣跨敤upvalue寰堟柟渚匡紝浣嗗畠浠殑璇箟涔熷緢寰錛岄渶瑕佸紩璧鋒敞鎰忋傛瘮濡傚皢f1鍑芥暟鏀規(guī)垚錛?/font>

function f1(n)
聽聽 local function f2()
聽聽聽聽聽 print(n)
聽聽 end
聽聽 n = n + 10
聽聽 return f2
end

g1 = f1(1979)
g1() -- 鎵撳嵃鍑?989

鍐呭祵鍑芥暟瀹氫箟鍦╪ = n + 10榪欐潯璇彞涔嬪墠錛屽彲涓轟粈涔坓1()鎵撳嵃鍑虹殑鍗存槸1989錛焨pvalue瀹為檯鏄眬閮ㄥ彉閲忥紝鑰?/font> 灞閮ㄥ彉閲忔槸淇濆瓨鍦ㄥ嚱鏁板爢鏍堟鏋朵笂(stack frame)鐨勶紝鎵浠ュ彧瑕乽pvalue榪樻病鏈夌寮鑷繁鐨勪綔鐢ㄥ煙錛屽畠?yōu)兏鐩?/font> 鐢熷瓨鍦ㄥ嚱鏁板爢鏍堜笂銆傝繖縐嶆儏鍐典笅錛岄棴鍖呭皢閫氳繃鎸囧悜鍫嗘爤涓婄殑upvalue鐨勫紩鐢ㄦ潵璁塊棶瀹冧滑錛屼竴鏃pvalue鍗沖皢紱誨紑 鑷繁鐨勪綔鐢ㄥ煙(榪欎篃鎰忓懗鐫瀹冮┈涓婅浠庡爢鏍堜腑娑堝け)錛岄棴鍖呭氨浼?xì)湄?fù)瀹冨垎閰嶇┖闂村茍淇濆瓨褰撳墠鐨勫鹼紝浠ュ悗渚垮彲閫氳繃鎸囧悜 鏂板垎閰嶇┖闂寸殑寮曠敤鏉ヨ闂upvalue銆傚綋鎵ц鍒癴1(1979)鐨刵 = n + 10鏃訛紝闂寘宸茬粡鍒涘緩浜嗭紝浣嗘槸n騫舵病鏈夌 寮浣滅敤鍩燂紝鎵浠ラ棴鍖呬粛鐒跺紩鐢ㄥ爢鏍堜笂鐨刵錛屽綋return f2瀹屾垚鏃訛紝n鍗沖皢緇撴潫鐢熷懡錛屾鏃墮棴鍖呬究灝唍(宸茬粡鏄?989 浜?澶嶅埗鍒拌嚜宸辯鐞嗙殑絀洪棿涓互渚垮皢鏉ヨ闂傚紕娓呮浜嗗唴閮ㄧ殑縐樺瘑鍚庯紝榪愯緇撴灉灝變笉闅捐В閲婁簡銆?/font>

聽聽聽 upvalue榪樺彲浠ヤ負(fù)闂寘涔嬮棿鎻愪緵涓縐嶆暟鎹叡浜殑鏈哄埗銆傝瘯鐪嬩笅渚嬶細(xì)

function Create(n)
聽聽 local function foo1()
聽聽聽聽聽 print(n)
聽聽 end

聽聽 local function foo2()
聽聽聽聽聽 n = n + 10
聽聽 end

聽聽 return foo1,foo2
end

f1,f2 = Create(1979)
f1() -- 鎵撳嵃1979
f2()
f1() -- 鎵撳嵃1989
f2()
f1() -- 鎵撳嵃1999

f1,f2榪欎袱涓棴鍖呯殑鍘熷瀷鍒嗗埆鏄疌reate涓殑鍐呭祵鍑芥暟foo1鍜宖oo2錛岃宖oo1鍜宖oo2寮曠敤鐨剈pvalue鏄悓涓涓紝 鍗矯reate鐨勫眬閮ㄥ彉閲弉銆傚墠闈㈠凡璇磋繃錛屾墽琛屽畬Create璋冪敤鍚庯紝闂寘浼?xì)鎶婂爢鏍堜笂n鐨勫煎鍒跺嚭鏉ワ紝閭d箞鏄惁f1鍜宖2 灝卞垎鍒嫢鏈変竴涓猲鐨勬嫹璐濆憿錛熷叾瀹炰笉鐒?dòng)灱屽綋Lua鍙戠幇涓や釜闂寘鐨剈pvalue鎸囧悜鐨勬槸褰撳墠鍫嗘爤涓婄殑鐩稿悓鍙橀噺鏃訛紝浼?xì)鑱?/font> 鏄庡湴鍙敓鎴愪竴涓嫹璐濓紝鐒跺悗璁╄繖涓や釜闂寘鍏變韓璇ユ嫹璐濓紝榪欐牱浠諱竴涓棴鍖呭璇pvalue榪涜淇敼閮戒細(xì)琚彟涓涓帰鐭?/font> 銆備笂榪頒緥瀛愬緢娓呮鍦拌鏄庝簡榪欑偣錛氭瘡嬈¤皟鐢╢2閮藉皢upvalue鐨勫煎鍔犱簡10錛岄殢鍚巉1灝嗘洿鏂板悗鐨勫兼墦鍗板嚭鏉ャ?/font> upvalue鐨勮繖縐嶈涔夊緢鏈変環(huán)鍊鹼紝瀹冧嬌寰楅棴鍖呬箣闂村彲浠ヤ笉渚濊禆鍏ㄥ眬鍙橀噺榪涜閫氳錛屼粠鑰屼嬌浠g爜鐨勫彲闈犳уぇ澶ф彁楂樸?/font>

聽聽聽 闂寘鍦ㄥ垱寤轟箣鏃跺叾upvalue灝卞凡緇忎笉鍦ㄥ爢鏍堜笂鐨勬儏鍐典篃鏈夊彲鑳藉彂鐢燂紝榪欐槸鍥犱負(fù)鍐呭祵鍑芥暟鍙互寮曠敤鏇村灞傚鍖呭嚱鏁?/font> 鐨勫眬閮ㄥ彉閲忥細(xì)

function Test(n)
聽聽 local function foo()
聽聽聽聽聽 local function inner1()
聽聽聽聽聽聽聽聽 print(n)
聽聽聽聽聽 end
聽聽聽聽聽 local function inner2()
聽聽聽聽聽聽聽聽 n = n + 10
聽聽聽聽聽 end
聽聽聽聽聽 return inner1,inner2
聽聽 end
聽聽 return foo
end

t = Test(1979)
f1,f2 = t()
f1()聽聽聽聽聽聽聽 -- 鎵撳嵃1979
f2()
f1()聽聽聽聽聽聽聽 -- 鎵撳嵃1989
g1,g2 = t()
g1()聽聽聽聽聽聽聽 -- 鎵撳嵃1989
g2()
g1()聽聽聽聽聽聽聽 -- 鎵撳嵃1999
f1()聽聽聽聽聽聽聽 -- 鎵撳嵃1999

鎵ц瀹宼 = Test(1979)鍚庯紝Test鐨勫眬閮ㄥ彉閲弉灝扁滄鈥濅簡錛屾墍浠ュ綋f1,f2榪欎袱涓棴鍖呰鍒涘緩鏃跺爢鏍堜笂鏍規(guī)湰鎵句笉鍒?/font> n鐨勮釜褰憋紝榪欏彨瀹冧滑濡備綍鍙栧緱n鐨勫煎憿錛熷懙鍛碉紝涓嶈蹇樹簡Test鍑芥暟鐨刵涓嶄粎浠呮槸inner1鍜宨nner2鐨剈pvalue錛屽悓 鏃跺畠涔熸槸foo鐨剈pvalue銆倀 = Test(1979)涔嬪悗錛宼榪欎釜闂寘涓瀹氬凡緇忔妸n濡ュ杽淇濆瓨濂戒簡錛屼箣鍚巉1銆乫2濡傛灉鍦?/font> 褰撳墠鍫嗘爤涓婃壘涓嶅埌n灝變細(xì)鑷姩鍒板畠浠殑澶栧寘闂寘(濮戜笖榪欎箞鍙?鐨剈pvalue寮曠敤鏁扮粍涓幓鎵撅紝騫舵妸鎵懼埌鐨勫紩鐢ㄥ兼嫹 璐濆埌鑷繁鐨剈pvalue寮曠敤鏁扮粍涓備粩緇嗚瀵熶笂榪頒唬鐮侊紝鍙互鍒ゅ畾g1鍜実2涓巉1鍜宖2鍏變韓鍚屼竴涓猽pvalue銆傝繖鏄負(fù) 浠涔堝憿錛熷叾瀹烇紝g1鍜実2涓巉1鍜宖2閮芥槸鍚屼竴涓棴鍖?t)鍒涘緩鐨勶紝鎵浠ュ畠浠紩鐢ㄧ殑upvalue(n)瀹為檯涔熸槸鍚屼竴涓彉閲?/font> 錛岃屽垰鎵嶆弿榪扮殑鎼滅儲鏈哄埗鍒欎繚璇佷簡鏈鍚庡畠浠殑upvalue寮曠敤閮戒細(xì)鎸囧悜鍚屼竴涓湴鏂廣?/font>

聽聽聽 Lua灝嗗嚱鏁板仛涓哄熀鏈被鍨嬪煎茍鏀寔璇嶆硶瀹氱晫鐨勭壒鎬т嬌寰楄璦鍏鋒湁寮哄ぇ鐨勬娊璞¤兘鍔涖傝岄忓交璁よ瘑鍑芥暟銆侀棴鍖呭拰 upvalue灝嗗府鍔╃▼搴忓憳鍠勭敤榪欑鑳藉姏銆?/font>



swo 2006-11-28 14:43 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              在线观看日韩av电影| 欧美午夜a级限制福利片| 久久蜜桃资源一区二区老牛| 一区二区动漫| 一本色道婷婷久久欧美| 亚洲午夜视频在线观看| 一区二区三区欧美在线观看| 亚洲尤物在线视频观看| 久久久久**毛片大全| 欧美成人免费在线视频| 亚洲国产成人91精品| 久久久精品国产免费观看同学| 亚洲一区999| 久久精品国产成人| 欧美国产日韩在线| 亚洲性视频网站| 久久视频国产精品免费视频在线 | 欧美专区一区二区三区| 久久综合成人精品亚洲另类欧美| 欧美高清视频| 亚洲欧美国产三级| 欧美大香线蕉线伊人久久国产精品| 欧美日韩裸体免费视频| 国产一区二区三区视频在线观看| 亚洲黄页一区| 欧美在线播放视频| 最新日韩在线| 久久深夜福利免费观看| 欧美午夜宅男影院| 亚洲国产高清自拍| 久久国产精品亚洲va麻豆| 欧美激情一区二区在线| 亚洲欧美成人一区二区在线电影| 欧美电影资源| 很黄很黄激情成人| 亚洲午夜精品在线| 亚洲国产精品va在线看黑人| 羞羞答答国产精品www一本| 欧美精品一区二区三区蜜桃 | 国产亚洲毛片| 亚洲私拍自拍| 免费试看一区| 午夜精品区一区二区三| 欧美精品一线| 亚洲高清久久| 久久激情五月激情| 99精品视频一区| 亚洲在线视频| 欧美日韩国产区| 亚洲欧洲一区二区天堂久久 | 欧美一区二区视频网站| 久久亚洲欧美国产精品乐播| 国产精品久久激情| 日韩一级黄色av| 久久综合色88| 亚洲欧美视频| 欧美福利视频在线观看| 欧美日韩一区二区三区在线| 欧美午夜在线一二页| 亚洲日本黄色| 小黄鸭精品密入口导航| 亚洲成色777777在线观看影院| 亚洲欧美激情视频| 国产日韩欧美在线一区| 亚洲欧美日韩国产另类专区| 一区二区三区视频在线播放| 国产精品成人一区二区| 亚洲综合色在线| 香蕉久久夜色| 亚洲国产欧美国产综合一区| 欧美黑人多人双交| 欧美精品免费播放| 亚洲欧美国产高清| 欧美一区二区女人| 在线播放豆国产99亚洲| 欧美风情在线| 欧美日韩亚洲高清一区二区| 亚洲女人小视频在线观看| 午夜精彩国产免费不卡不顿大片| 国产欧美一区二区三区另类精品| 欧美一区二区女人| 久久精品国产在热久久| 亚洲精品美女在线观看| 亚洲午夜视频在线| 国产一在线精品一区在线观看| 久久久人成影片一区二区三区观看| 快播亚洲色图| 亚洲一区二区三区久久| 性欧美暴力猛交另类hd| 亚洲国产婷婷香蕉久久久久久| 亚洲精品国产拍免费91在线| 国产精品久久| 欧美a级一区| 欧美少妇一区| 久久久一区二区| 欧美全黄视频| 开元免费观看欧美电视剧网站| 欧美极品欧美精品欧美视频| 午夜在线视频观看日韩17c| 狂野欧美一区| 久久久久国产精品人| 欧美精品二区三区四区免费看视频| 亚洲视频欧洲视频| 麻豆成人小视频| 欧美在线不卡| 欧美色精品在线视频| 老牛影视一区二区三区| 国产精品v欧美精品v日韩| 欧美电影打屁股sp| 国语自产在线不卡| 亚洲一区二区不卡免费| 91久久精品美女高潮| 在线成人免费观看| 国内偷自视频区视频综合| 欧美一区二区三区在线看| 欧美/亚洲一区| 久久亚洲私人国产精品va| 欧美三级免费| 亚洲精品乱码久久久久久按摩观| 国产在线不卡精品| 亚洲欧美日韩一区二区在线 | 久久久五月婷婷| 欧美一区二区日韩| 欧美性大战久久久久久久| 亚洲高清视频的网址| 激情五月婷婷综合| 久久av一区二区三区漫画| 欧美一区二区福利在线| 国产精品vip| 亚洲午夜激情网页| 亚洲欧美激情一区| 国产精品免费在线| 亚洲午夜精品网| 亚洲图片在线观看| 欧美交受高潮1| 最新热久久免费视频| 日韩亚洲精品电影| 欧美日韩黄色大片| 一本色道久久综合一区| 亚洲午夜一区二区三区| 欧美性生交xxxxx久久久| 中国成人黄色视屏| 亚洲综合首页| 国产日韩在线视频| 午夜在线成人av| 久久嫩草精品久久久精品一| 国产一区二区三区四区五区美女| 亚洲欧美日韩一区二区三区在线| 久久国产日韩| 欲色影视综合吧| 欧美激情精品久久久久久黑人| 最新亚洲视频| 亚洲欧美一区在线| 国产日韩欧美三级| 久久五月天婷婷| 亚洲人成在线观看网站高清| 一本到12不卡视频在线dvd| 欧美国产极速在线| 亚洲精品国产品国语在线app| 一区二区不卡在线视频 午夜欧美不卡'| 嫩草伊人久久精品少妇av杨幂| 91久久精品久久国产性色也91| 亚洲制服av| 国产一区二区三区高清在线观看| 午夜在线一区二区| 欧美黄色精品| 亚洲欧美精品一区| 尤物在线观看一区| 国产精品v片在线观看不卡 | 日韩视频在线一区二区三区| 亚洲欧美精品在线| 国产午夜精品视频| 欧美福利电影在线观看| 亚洲专区欧美专区| 欧美va亚洲va香蕉在线| 亚洲精品美女91| 国产一区二区电影在线观看| 欧美风情在线观看| 美女免费视频一区| 国产精品综合av一区二区国产馆| 午夜在线播放视频欧美| 亚洲国产mv| 欧美一区二区高清在线观看| 亚洲第一区在线观看| 欧美人成在线| 另类亚洲自拍| 午夜精品福利一区二区三区av| 免费h精品视频在线播放| 中文成人激情娱乐网| 一区二区三区无毛| 国产麻豆日韩欧美久久| 欧美伦理a级免费电影| 亚洲欧美日韩国产综合在线| 欧美国产综合视频| 久久精品国产亚洲aⅴ| 宅男噜噜噜66一区二区66| 亚洲国产精品久久久久秋霞影院 | 在线看片日韩| 国产免费亚洲高清| 欧美视频久久|