锘??xml version="1.0" encoding="utf-8" standalone="yes"?>美女在线一区二区,亚洲国产高潮在线观看,国产亚洲精品bt天堂精选http://www.shnenglu.com/swo2006/category/3195.htmlzh-cnFri, 23 May 2008 01:09:47 GMTFri, 23 May 2008 01:09:47 GMT60灝嗗瓧絎︿覆鎸夆滐紝鈥濆垎鍓?lua鍑芥暟)http://www.shnenglu.com/swo2006/articles/16000.htmlswoswoTue, 05 Dec 2006 02:10:00 GMThttp://www.shnenglu.com/swo2006/articles/16000.htmlhttp://www.shnenglu.com/swo2006/comments/16000.htmlhttp://www.shnenglu.com/swo2006/articles/16000.html#Feedback0http://www.shnenglu.com/swo2006/comments/commentRss/16000.htmlhttp://www.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://www.shnenglu.com/swo2006/articles/15781.htmlswoswoWed, 29 Nov 2006 06:30:00 GMThttp://www.shnenglu.com/swo2006/articles/15781.htmlhttp://www.shnenglu.com/swo2006/comments/15781.htmlhttp://www.shnenglu.com/swo2006/articles/15781.html#Feedback0http://www.shnenglu.com/swo2006/comments/commentRss/15781.htmlhttp://www.shnenglu.com/swo2006/services/trackbacks/15781.html銆銆銆銆鍗忕▼(coroutine)鎶鏈槸涓縐嶇▼搴忔帶鍒舵満鍒訛紝鏃╁湪涓婁笘綰?0騫翠唬灝卞凡 鎻愬嚭錛岀敤瀹冨彲浠ュ緢鏂逛究鍦板疄鐜板崗浣滃紡澶氫換鍔°傚湪涓繪祦鐨勭▼搴忚璦(濡侰++銆丣ava銆丳ascal絳?閲屾垜浠緢灝戣兘鐪嬪埌鍗忕▼鐨勮韓褰憋紝浣嗘槸鐜板湪涓嶅皯鍔ㄦ佽剼鏈 璦(Python銆丳erl)鍗撮兘鎻愪緵浜嗗崗紼嬫垨涓庝箣鐩鎬技鐨勬満鍒訛紝鍏朵腑鏈紿佸嚭鐨勪究鏄疞ua銆?br />銆銆
銆銆銆銆Lua璇█瀹炵幇鐨勫崗紼嬫槸涓縐嶉潪瀵圭О 寮?asymmetric)鍗忕▼錛屾垨縐板崐瀵圭О寮?semi-asymmetric)鍗忕▼錛屽張鎴栧共鑴嗗氨鍙崐鍗忕▼(semi-coroutine)銆傝繖縐嶅崗紼? 鏈哄埗涔嬫墍浠ヨ縐頒負闈炲縐扮殑錛屾槸鍥犱負瀹冩彁渚涗簡涓ょ浼犻掔▼搴忔帶鍒舵潈鐨勬搷浣滐細涓縐嶆槸(閲?璋冪敤鍗忕▼(閫氳繃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
銆銆
銆銆-- 鎶婃帶鍒舵潈鍙婃寚瀹氱殑鏁版嵁val浼犵粰鍗忕▼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璁句負涓誨嚱鏁?鍗忕▼)
銆銆coro.main = main
銆銆--灝哻oro.main璁句負褰撳墠鍗忕▼
銆銆coro.current = coro.main
銆銆--寮濮嬫墽琛屼富鍑芥暟(鍗忕▼)
銆銆coro.main()
銆銆
銆銆
銆 銆涓婇潰鐨勭ず渚嬪畾涔変簡涓涓悕涓簃ain鐨勪富鍑芥暟錛屾暣涓▼搴忕敱瀹冭屽錛屼篃鍥犲畠鑰岀粓銆備負浠涔堥渶瑕佷竴涓繖鏍風殑涓誨嚱鏁板憿錛熶笂闈㈣浜嗭紝紼嬪簭鎺у埗鏉冨彲浠ュ湪瀵圭О寮忓崗紼嬩箣闂? 鑷敱鍦扮洿鎺ヤ紶閫掞紝瀹冧滑涔嬮棿鏃犳墍璋撹皝浠庡睘浜庤皝鐨勯棶棰橈紝閮藉浜庡悓涓涓眰綰э紝浣嗘槸搴旂敤紼嬪簭蹇呴』鏈変竴涓紑濮嬬偣錛屾墍浠ユ垜浠畾涔変竴涓富鍑芥暟錛岃瀹冪偣鐕冪▼搴忚繍琛岀殑瀵肩伀 綰褲傝櫧璇村悇涓崗紼嬮兘鏄鉤絳夌殑錛屼絾鍋氫負紼嬪簭榪愯鍘熷姩鍔涚殑涓誨嚱鏁頒粛鐒朵韓鏈夌壒孌婄殑鍦頒綅(榪欎釜涓栦笂鍝湁緇濆鐨勫鉤絳夛紒)錛屼負姝ゆ垜浠殑搴撲笓闂ㄧ敤浜嗕竴涓? coro.main鍙橀噺鏉ヤ繚瀛樹富鍑芥暟錛屽茍涓斿湪瀹冩墽琛屼箣鍓嶈灝嗗畠璁句負褰撳墠鍗忕▼(铏界劧涓婇潰鐨刴ain瀹為檯鍙槸涓涓櫘閫氬嚱鏁拌岄潪涓涓湡姝g殑鍗忕▼錛屼絾榪欏茍鏃犲お澶х殑 鍏崇郴錛屼互鍚庝富鍑芥暟涔熻縐頒負涓誨崗紼?銆傜ず渚嬭繍琛岀殑緇撴灉鏄細
銆銆
銆銆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)錛屽茍鏍規嵁姝ゆ椂鍗? 紼嬩紶鍥炵殑鏁版嵁鏉ュ喅瀹氫笅涓涓(閲?鍚姩鐨勫崗紼嬨備粠搴旂敤紺轟緥鏉ョ湅錛屽崗紼嬩笌鍗忕▼涔嬮棿浼間箮鏄敤transfer鐩存帴浼犻掓帶鍒舵潈鐨勶紝浣嗗疄闄呬笂榪欎釜浼犻掕繕鏄氳繃浜嗕富 鍗忕▼銆傛瘡涓涓湪涓誨崗紼嬮噷琚皟鐢?姣旇緝coro.current鍜宑oro.main鏄惁鐩稿悓鍗沖彲鍒ゆ柇鍑?鐨則ransfer閮界浉褰撲簬涓涓崗紼嬬鐞嗗櫒錛屽畠涓? 鏂湴(閲?鍚姩涓涓崗紼嬶紝灝嗘帶鍒舵潈浜ゅ嚭鍘伙紝鐒跺悗絳夐偅涓崗紼嬫寕璧鋒椂鍙堝皢鎺у埗鏉冩敹鍥烇紝鐒跺悗鍐?閲?鍚姩涓嬩竴涓崗紼?..錛岃繖涓姩浣滀笉浼氬仠姝紝闄ら潪< 1>灝?閲?鍚姩鐨勫崗紼嬫槸涓誨崗紼嬶紱<2>鏌愪釜鍗忕▼娌℃湁鎻愪緵鎺у埗鏉冪殑涓嬩竴涓洰鐨勫湴銆傚緢鏄劇劧錛屾瘡涓杞垎媧懼驚鐜紑濮嬫椂閮界敱涓誨崗紼嬫妸鎻℃帶鍒舵潈錛? 鍦ㄥ驚鐜繃紼嬩腑濡傛灉鎺у埗鏉冪殑涓嬩竴绔欏張鏄富鍗忕▼鐨勮瘽灝辨剰鍛崇潃榪欎釜褰撳垵鎶婃帶鍒舵潈浜ゅ嚭鍘葷殑涓誨崗紼媡ransfer鎿嶄綔搴旇緇撴潫浜嗭紝鎵浠ュ嚱鏁扮洿鎺ヨ繑鍥瀡al浠庤岀粨鏉? 榪欒疆寰幆銆傚浜庢儏鍐?lt;2>錛屽洜涓篶oro.create(f)鍒涘緩鐨勫崗紼嬬殑浣撳嚱鏁?body function)瀹為檯鏄痜unction(val) return nil,f(val) end錛屾墍浠ュ綋鍑芥暟f鐨勬渶鍚庝竴鏉℃寚浠や笉鏄痶ransfer鏃訛紝榪欎釜鍗忕▼緇堝皢鎵ц瀹屾瘯騫舵妸nil鍜屽嚱鏁癴鐨勮繑鍥炲間竴璧瘋繑鍥炪傚鏋渒鏄繖鏍風殑鍗忕▼錛? transfer鎵ц瀹宬,val = k(val)璇彞鍚巏鍊煎氨鎴愪簡nil錛岃繖琚涓轟竴涓敊璇紝鍥犱負紼嬪簭姝ゆ椂娌℃硶紜畾涓嬩竴涓簲璇?閲?鍚姩鐨勫崗紼嬪埌搴曟槸璋併傛墍浠ュ湪瀵圭О寮忔ā鍨嬩笅錛屾瘡涓涓崗紼?褰? 鐒朵富鍗忕▼鍑哄)鏈鍚庨兘蹇呴』鏄懼紡鍦板皢鎺у埗鏉冧紶閫掔粰鍏跺畠鐨勫崗紼嬨傛牴鎹互涓婂垎鏋愶紝搴旂敤紺轟緥鐨勬帶鍒舵潈鐨勫垎媧懼簲涓猴細
銆銆
銆銆絎竴杞垎媧? main->foo1->main->foo2->main->main(緇撴潫)
銆銆絎簩杞垎媧? main->foo2->main->foo1->main->main(緇撴潫)
銆銆絎笁杞垎媧? main->foo1->main->main(緇撴潫)
銆銆
銆 銆銆銆鐢變簬鍙互鐩存帴鎸囧畾鎺у埗鏉冧紶閫掔殑鐩爣錛屽縐板紡鍗忕▼鏈哄埗鎷ユ湁鏋佸ぇ鐨勮嚜鐢憋紝浣嗗緱鍒拌繖縐嶈嚜鐢辯殑浠d環鍗存槸鐗虹壊紼嬪簭緇撴瀯銆傚鏋滅▼搴忕◢寰鏉備竴鐐癸紝閭d箞鍗充嬌鏄潪甯? 鏈夌粡楠岀殑紼嬪簭鍛樹篃寰堥毦瀵圭▼搴忔祦紼嬫湁鍏ㄩ潰鑰屾竻鏅扮殑鎶婃彙銆傝繖闈炲父綾諱技goto璇彞錛屽畠鑳借紼嬪簭璺寵漿鍒頒換浣曟兂鍘葷殑鍦版柟錛屼絾浜轟滑鍗村緢闅劇悊瑙e厖鏂ョ潃goto鐨勭▼搴忋? 闈炲縐板紡鍗忕▼鍏鋒湁鑹ソ鐨勫眰嬈″寲緇撴瀯鍏崇郴錛?閲?鍚姩榪欎簺鍗忕▼涓庤皟鐢ㄤ竴涓嚱鏁伴潪甯哥被浼鹼細琚?閲?鍚姩鐨勫崗紼嬪緱鍒版帶鍒舵潈寮濮嬫墽琛岋紝鐒跺悗鎸傝搗(鎴栫粨鏉?騫跺皢鎺у埗 鏉冭繑鍥炵粰鍗忕▼璋冪敤鑰咃紝榪欎笌璁$畻鏈哄厛鍝蹭滑鍊″鐨勭粨鏋勫寲緙栫▼椋庢牸瀹屽叏涓鑷淬?br />銆銆
銆銆銆銆緇間笂鎵榪幫紝Lua鎻愪緵鐨勯潪瀵圭О寮忓崗紼嬩笉浣嗗叿鏈変笌瀵圭О寮忓崗紼嬩竴鏍峰己澶х殑鑳藉姏錛岃屼笖榪樿兘閬垮厤紼嬪簭鍛樻互鐢ㄦ満鍒跺啓鍑虹粨鏋勬販涔辯殑紼嬪簭銆?img src ="http://www.shnenglu.com/swo2006/aggbug/15781.html" width = "1" height = "1" />

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

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錛屾墍浠ュ畠浠嶇劧鑳戒互鏌愮褰㈠紡緇х畫鈥滃瓨媧燴濅笅鏉ワ紝浠庤屼護g1()鎵撳嵃鍑烘紜殑鍊箋?/font>

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

聽聽聽 浣跨敤upvalue寰堟柟渚匡紝浣嗗畠浠殑璇箟涔熷緢寰錛岄渶瑕佸紩璧鋒敞鎰忋傛瘮濡傚皢f1鍑芥暟鏀規垚錛?/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榪樻病鏈夌寮鑷繁鐨勪綔鐢ㄥ煙錛屽畠灝變竴鐩?/font> 鐢熷瓨鍦ㄥ嚱鏁板爢鏍堜笂銆傝繖縐嶆儏鍐典笅錛岄棴鍖呭皢閫氳繃鎸囧悜鍫嗘爤涓婄殑upvalue鐨勫紩鐢ㄦ潵璁塊棶瀹冧滑錛屼竴鏃pvalue鍗沖皢紱誨紑 鑷繁鐨勪綔鐢ㄥ煙(榪欎篃鎰忓懗鐫瀹冮┈涓婅浠庡爢鏍堜腑娑堝け)錛岄棴鍖呭氨浼氫負瀹冨垎閰嶇┖闂村茍淇濆瓨褰撳墠鐨勫鹼紝浠ュ悗渚垮彲閫氳繃鎸囧悜 鏂板垎閰嶇┖闂寸殑寮曠敤鏉ヨ闂upvalue銆傚綋鎵ц鍒癴1(1979)鐨刵 = n + 10鏃訛紝闂寘宸茬粡鍒涘緩浜嗭紝浣嗘槸n騫舵病鏈夌 寮浣滅敤鍩燂紝鎵浠ラ棴鍖呬粛鐒跺紩鐢ㄥ爢鏍堜笂鐨刵錛屽綋return f2瀹屾垚鏃訛紝n鍗沖皢緇撴潫鐢熷懡錛屾鏃墮棴鍖呬究灝唍(宸茬粡鏄?989 浜?澶嶅埗鍒拌嚜宸辯鐞嗙殑絀洪棿涓互渚垮皢鏉ヨ闂傚紕娓呮浜嗗唴閮ㄧ殑縐樺瘑鍚庯紝榪愯緇撴灉灝變笉闅捐В閲婁簡銆?/font>

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

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璋冪敤鍚庯紝闂寘浼氭妸鍫嗘爤涓妌鐨勫煎鍒跺嚭鏉ワ紝閭d箞鏄惁f1鍜宖2 灝卞垎鍒嫢鏈変竴涓猲鐨勬嫹璐濆憿錛熷叾瀹炰笉鐒訛紝褰揕ua鍙戠幇涓や釜闂寘鐨剈pvalue鎸囧悜鐨勬槸褰撳墠鍫嗘爤涓婄殑鐩稿悓鍙橀噺鏃訛紝浼氳仾 鏄庡湴鍙敓鎴愪竴涓嫹璐濓紝鐒跺悗璁╄繖涓や釜闂寘鍏變韓璇ユ嫹璐濓紝榪欐牱浠諱竴涓棴鍖呭璇pvalue榪涜淇敼閮戒細琚彟涓涓帰鐭?/font> 銆備笂榪頒緥瀛愬緢娓呮鍦拌鏄庝簡榪欑偣錛氭瘡嬈¤皟鐢╢2閮藉皢upvalue鐨勫煎鍔犱簡10錛岄殢鍚巉1灝嗘洿鏂板悗鐨勫兼墦鍗板嚭鏉ャ?/font> upvalue鐨勮繖縐嶈涔夊緢鏈変環鍊鹼紝瀹冧嬌寰楅棴鍖呬箣闂村彲浠ヤ笉渚濊禆鍏ㄥ眬鍙橀噺榪涜閫氳錛屼粠鑰屼嬌浠g爜鐨勫彲闈犳уぇ澶ф彁楂樸?/font>

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

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榪欎袱涓棴鍖呰鍒涘緩鏃跺爢鏍堜笂鏍規湰鎵句笉鍒?/font> n鐨勮釜褰憋紝榪欏彨瀹冧滑濡備綍鍙栧緱n鐨勫煎憿錛熷懙鍛碉紝涓嶈蹇樹簡Test鍑芥暟鐨刵涓嶄粎浠呮槸inner1鍜宨nner2鐨剈pvalue錛屽悓 鏃跺畠涔熸槸foo鐨剈pvalue銆倀 = Test(1979)涔嬪悗錛宼榪欎釜闂寘涓瀹氬凡緇忔妸n濡ュ杽淇濆瓨濂戒簡錛屼箣鍚巉1銆乫2濡傛灉鍦?/font> 褰撳墠鍫嗘爤涓婃壘涓嶅埌n灝變細鑷姩鍒板畠浠殑澶栧寘闂寘(濮戜笖榪欎箞鍙?鐨剈pvalue寮曠敤鏁扮粍涓幓鎵撅紝騫舵妸鎵懼埌鐨勫紩鐢ㄥ兼嫹 璐濆埌鑷繁鐨剈pvalue寮曠敤鏁扮粍涓備粩緇嗚瀵熶笂榪頒唬鐮侊紝鍙互鍒ゅ畾g1鍜実2涓巉1鍜宖2鍏變韓鍚屼竴涓猽pvalue銆傝繖鏄負 浠涔堝憿錛熷叾瀹烇紝g1鍜実2涓巉1鍜宖2閮芥槸鍚屼竴涓棴鍖?t)鍒涘緩鐨勶紝鎵浠ュ畠浠紩鐢ㄧ殑upvalue(n)瀹為檯涔熸槸鍚屼竴涓彉閲?/font> 錛岃屽垰鎵嶆弿榪扮殑鎼滅儲鏈哄埗鍒欎繚璇佷簡鏈鍚庡畠浠殑upvalue寮曠敤閮戒細鎸囧悜鍚屼竴涓湴鏂廣?/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>
              一区二区三区自拍| 久久精品一二三| 久久青草福利网站| 亚洲午夜激情网页| 欧美暴力喷水在线| 免费日韩成人| 国产视频亚洲| 亚洲女同同性videoxma| 一区二区三区免费看| 欧美黄色免费网站| 欧美成人精品一区| 一色屋精品视频免费看| 午夜一级在线看亚洲| 午夜一级久久| 国产精品每日更新| 一本色道久久88综合日韩精品| 亚洲精品专区| 欧美黄网免费在线观看| 亚洲高清自拍| 亚洲区在线播放| 你懂的网址国产 欧美| 蜜桃av一区二区在线观看| 国内综合精品午夜久久资源| 篠田优中文在线播放第一区| 午夜精品国产精品大乳美女| 国产精品一区二区久久| 亚洲伊人第一页| 久久久久久久久久久一区| 国产一区激情| 久久久久久国产精品mv| 欧美刺激午夜性久久久久久久| 亚洲高清视频一区| 蜜桃久久av一区| 亚洲欧洲日本mm| 在线午夜精品| 国产乱理伦片在线观看夜一区| 午夜精品久久久| 久久亚洲私人国产精品va媚药| 影音先锋欧美精品| 欧美国产日本在线| aa国产精品| 久久精品人人爽| 亚洲电影免费观看高清| 欧美精品激情| 亚洲一区中文| 鲁大师成人一区二区三区| 亚洲全黄一级网站| 亚洲精品乱码| 欧美日韩国产色视频| 亚洲激情在线视频| 亚洲欧美bt| 极品裸体白嫩激情啪啪国产精品| 欧美成年人视频网站| 亚洲视频视频在线| 欧美电影免费观看| 亚洲欧美日韩成人| 亚洲国产成人午夜在线一区| 欧美日韩精品一本二本三本| 亚洲欧美在线看| 欧美高清视频在线播放| 亚洲男同1069视频| 影音先锋成人资源站| 欧美视频在线观看免费| 久久精品视频在线播放| 99视频+国产日韩欧美| 久久精品99久久香蕉国产色戒| 亚洲人成亚洲人成在线观看图片| 国产精品美女久久久久久久 | 一区二区电影免费在线观看| 欧美在线视频在线播放完整版免费观看| 国产真实乱子伦精品视频| 欧美国产一区二区在线观看 | 久久久久久网站| 一区二区激情| 在线观看免费视频综合| 国产精品亚洲аv天堂网| 欧美成人69| 欧美在线视频播放| 在线亚洲观看| 亚洲精品乱码久久久久| 免费欧美在线| 久久精品亚洲国产奇米99| 亚洲天堂免费观看| 91久久精品美女| 悠悠资源网久久精品| 国产欧美日韩综合| 国产精品久久久一区麻豆最新章节| 久热这里只精品99re8久| 欧美伊人精品成人久久综合97| 亚洲美女在线观看| 亚洲人成网站精品片在线观看 | 欧美激情精品久久久六区热门 | 亚洲六月丁香色婷婷综合久久| 美女精品网站| 狂野欧美一区| 久久久精品tv| 久久福利资源站| 久久国产天堂福利天堂| 亚洲欧美视频一区| 亚洲午夜羞羞片| 亚洲一区二区三区中文字幕在线| 亚洲免费观看高清完整版在线观看熊 | 在线日韩av永久免费观看| 国产精品久久97| 欧美午夜免费影院| 欧美国内亚洲| 欧美金8天国| 欧美精品一二三| 欧美电影免费观看| 欧美激情第二页| 欧美日本亚洲韩国国产| 欧美人牲a欧美精品| 欧美日韩精品一区视频| 欧美日韩国产成人高清视频| 欧美女同视频| 国产精品国产三级国产专播品爱网 | 国产精品白丝av嫩草影院| 欧美黑人一区二区三区| 欧美精品一区二区三区视频 | 国内视频一区| 在线成人激情| 亚洲另类自拍| 亚洲欧美综合精品久久成人| 午夜国产精品影院在线观看| 久久av二区| 欧美成人伊人久久综合网| 亚洲丰满在线| 中日韩美女免费视频网址在线观看| 亚洲一线二线三线久久久| 久久黄色小说| 欧美精品少妇一区二区三区| 国产精品成人va在线观看| 国产视频亚洲精品| 亚洲国产人成综合网站| 一区二区三区福利| 欧美一区二区福利在线| 嫩草国产精品入口| 一本不卡影院| 久久精品国产v日韩v亚洲| 欧美不卡一区| 国产精品自拍网站| 亚洲黄色一区二区三区| 亚洲视频香蕉人妖| 久久亚洲一区二区三区四区| 91久久国产精品91久久性色| 亚洲在线免费观看| 蜜桃av噜噜一区二区三区| 国产精品日韩在线播放| 伊伊综合在线| 亚洲欧美日韩国产成人| 亚洲第一精品福利| 午夜久久黄色| 欧美三日本三级三级在线播放| 国产一区二区三区在线观看网站 | 亚洲日本成人在线观看| 午夜伦欧美伦电影理论片| 欧美精品在线免费观看| 狠狠做深爱婷婷久久综合一区 | 久久久999成人| 99热免费精品| 欧美激情视频一区二区三区在线播放| 国产精品一二三四| 亚洲最新视频在线| 欧美大片一区二区三区| 午夜伦理片一区| 国产精品成人免费| 日韩系列在线| 欧美不卡福利| 久久精品欧美日韩| 国产精品一区免费观看| 亚洲调教视频在线观看| 亚洲黄色免费| 免费看成人av| 亚洲福利一区| 欧美 日韩 国产一区二区在线视频 | 蜜臀va亚洲va欧美va天堂| 亚洲一区二区高清| 欧美日本成人| 亚洲免费久久| 亚洲黄网站黄| 欧美精品 国产精品| 亚洲国产天堂久久国产91| 久久亚洲私人国产精品va| 欧美一级片一区| 国产伪娘ts一区| 欧美中文在线观看国产| 亚洲欧美国产另类| 国产美女精品在线| 欧美在线观看视频在线| 亚洲欧美日韩在线播放| 国产日韩精品一区二区三区| 亚洲欧美综合v| 欧美一级黄色网| 国产在线国偷精品产拍免费yy| 欧美在线视频全部完| 午夜影院日韩| 激情成人综合| 亚洲福利小视频| 欧美日韩免费观看一区=区三区| 亚洲作爱视频|