锘??xml version="1.0" encoding="utf-8" standalone="yes"?>中文在线资源观看网站视频免费不卡,一本色道久久综合一区,国产精品大片wwwwwwhttp://m.shnenglu.com/colorful/category/19902.htmlzc qq:1337220912zh-cnMon, 02 Mar 2015 22:16:29 GMTMon, 02 Mar 2015 22:16:29 GMT60qcjl lua project loghttp://m.shnenglu.com/colorful/archive/2015/03/01/209893.html澶氬僵浜虹敓澶氬僵浜虹敓Sun, 01 Mar 2015 03:55:00 GMThttp://m.shnenglu.com/colorful/archive/2015/03/01/209893.htmlhttp://m.shnenglu.com/colorful/comments/209893.htmlhttp://m.shnenglu.com/colorful/archive/2015/03/01/209893.html#Feedback0http://m.shnenglu.com/colorful/comments/commentRss/209893.htmlhttp://m.shnenglu.com/colorful/services/trackbacks/209893.htmlprotoc-gen-lua 鐢熸垚鐨刲ua鍙堝彂鐜版柊鐨勯棶棰? main function has more than 200 local variables闂錛岀綉涓婃悳绱簡(jiǎn)涓涓嬶紝鏈夌浉搴旂殑瑙e喅鏂規(guī)硶錛屾嵁璇磋繕浼?xì)鏈変竴涓柊鐨勯棶棰樺嚭鏉ワ細(xì)涓嶈兘鐢?repeated submessage,  寤鴻鐢ㄤ簯椋庣殑pbc. 鎵浠ユ柟妗堟敼涓虹敤浜戦鐨刾bc

澶氬僵浜虹敓 2015-03-01 11:55 鍙戣〃璇勮
]]>
cocos2dx lua protobufhttp://m.shnenglu.com/colorful/archive/2015/02/12/209802.html澶氬僵浜虹敓澶氬僵浜虹敓Thu, 12 Feb 2015 03:42:00 GMThttp://m.shnenglu.com/colorful/archive/2015/02/12/209802.htmlhttp://m.shnenglu.com/colorful/comments/209802.htmlhttp://m.shnenglu.com/colorful/archive/2015/02/12/209802.html#Feedback0http://m.shnenglu.com/colorful/comments/commentRss/209802.htmlhttp://m.shnenglu.com/colorful/services/trackbacks/209802.html
http://blog.csdn.net/weyson/article/details/17024325
http://m.shnenglu.com/colorful/archive/2015/01/17/209557.html
http://blog.csdn.net/w00w12l/article/details/39316321

protoc-gen-lua涓嬭澆鍦板潃: https://github.com/sean-lin/protoc-gen-lua

1/ 鍏堝埌protobuf鐨刾ython鐩綍涓嬫墽琛?br />    python setup.py build
    python setup.py install

2/ 鍦╬rotoc-gen-lua鐨刾lugin鐩綍涓柊寤簆rotoc-gen-lua.bat, 鍐呭濡備笅:
@python 鐩綍\protoc-gen-lua\plugin\protoc-gen-lua

3/ 鐢╬rotoc鎶妏roto鏂囦歡鐢熸垚lua鏂囦歡
  protoc --lua_out=./ --plugin=protoc-gen-lua="鐩綍\protoc-gen-lua.bat"  test.proto

4/ 灝唒rotoc-gen-lua/protobuf涓嬬殑pb.c 鏀懼埌宸ョ▼鐨凜lasses涓? 騫跺姞鍏ュ埌c++宸ョ▼涓?br />
5/ 灝唒rotoc-gen-lua/protobuf涓婄殑鎵鏈塴ua鏂囦歡鏀懼埌宸ョ▼鐨剆rc鐩綍(lua鐩綍)涓?br />
6/ AppDelegate.cpp 娣誨姞浠g爜
extern "C"{
    int luaopen_pb(lua_State* L);
}
鍦╝pplicationDidFinishLaunching()涓皟鐢?luaopen_pb(state);

---------------------------------------------------------------------------
    require "src/xy/person_pb"  
    local msg = person_pb.Person()  
    msg.id = 100   
    msg.name = "foo"   
    msg.email = "bar"   

    local pb_data = msg:SerializeToString()  -- Parse Example  
    print("create:", msg.id, msg.name, msg.email, pb_data)  


    local msg = person_pb.Person()   
    msg:ParseFromString(pb_data)   
    print("parser:", msg.id, msg.name, msg.email, pb_data)

---------------------------------------------------------------------------
縐繪鍒癮ndroid 璁板緱灝唒b.c娣誨姞鍒皃roj.android\jni\Android.mk涓?br />
 

澶氬僵浜虹敓 2015-02-12 11:42 鍙戣〃璇勮
]]>
Quick-Cocos2d-x 闆嗘垚 Google protobuf 鏂規(guī)硶http://m.shnenglu.com/colorful/archive/2015/01/17/209557.html澶氬僵浜虹敓澶氬僵浜虹敓Sat, 17 Jan 2015 08:08:00 GMThttp://m.shnenglu.com/colorful/archive/2015/01/17/209557.htmlhttp://m.shnenglu.com/colorful/comments/209557.htmlhttp://m.shnenglu.com/colorful/archive/2015/01/17/209557.html#Feedback0http://m.shnenglu.com/colorful/comments/commentRss/209557.htmlhttp://m.shnenglu.com/colorful/services/trackbacks/209557.htmlhttp://cn.cocos2d-x.org/tutorial/show?id=506
鏈枃灝嗗悜鎮(zhèn)ㄤ粙緇峇uick-Cocos2d-x闆嗘垚google protobuf鐨勬柟娉曘? 
 
絎竴姝?  闇瑕佹渶鏂扮殑protobuf 綾誨簱鍜岃В鏋愮▼搴忋?nbsp;
涓嬭澆鍦板潃錛?a target="_blank">https://github.com/sean-lin/protoc-gen-lua
 
git clone https://github.com/sean-lin/protoc-gen-lua.git 鍒頒換鎰忕殑涓涓湴鏂?
 

鐒跺悗錛屽彲浠ュ緱鍒伴噸瑕佺殑涓や釜鐩綍

1
2
protoc-gen-lua/plugin/ 
protoc-gen-lua/protobuf/
 
絎簩姝ワ紝 闇瑕佷嬌鐢╬rotoc —lua_out=. 榪欑鏂規(guī)硶錛?灝嗘垜浠嚜宸辯殑*.proto 鐨勬枃浠惰В鏋愭垚lua鏂囦歡

plugin鐩綍鏄彁渚涘皢buffer 鏂囦歡瑙f瀽鎴恖ua 鐗堟湰鐨勭被搴擄紝 闇瑕乸ython 鏀寔銆? 濡傛灉宸茬粡緙栬瘧浜?jiǎn)google 瀹樻柟鐨刾rotoc 閭d釜紼嬪簭錛?鍙渶瑕佸湪緋葷粺PATH鐜鍙橀噺鎬昏拷鍔爌lugin鐩綍灝卞ソ:

1
export PATH={protoc-gen-lua DIR }/plugin:$PATH
 
鍏充簬protoc鐨勭紪璇戝彟璇穏oogle .
 
濡傛灉瑙f瀽涓嶅嚭lua鏂囦歡鏉ワ紝 鍙互鎵嬪姩蹇椾俊涓涓媝lugin/protoc-gen-lua鐨勭▼搴忥紝 浠栧簲璇ユ槸+x 鐨勬潈闄?chmod +x plugin/protoc-gen-lua)
 
緇嗚妭鐨勫畨瑁呮楠ゅ彲浠ュ弬鑰?nbsp;https://code.google.com/p/protoc-gen-lua/
 
絎笁姝?錛?灝唒rotobuf 闆嗘垚鍒皅uick 涓?/strong>
protoc-gen-lua/protobuf/ 鐩綍灝辨槸瑕佺紪璇戝埌quick-cocos2d-x鐩綍閲岄潰鐨勯儴鍒嗐?nbsp;
 
鐜板湪錛?鎴戜滑鍙渶瑕?protoc-gen-lua/protobuf/pb.c 榪欎釜鏂囦歡 
 

鍏堢‘瀹氳嚜宸辯殑quick-cocos2d-x lua鎵╁睍鐩綍錛?

1
/quick-cocos2d-x/lib/cocos2d-x/scripting/lua/lua_extensions/
 
鎵鏈塴ua 鐨刢/c++鐜版垚鎵╁睍,閮藉彲浠ョ洿鎺ユ斁鍒拌繖閲屻?nbsp;
  
灝唒b.c榪欎釜鏂囦歡澶嶅埗鍒?lua_extension鐩綍涓嬶紝 鏈濂界嫭绔嬩竴涓洰褰曪紝 鍏嶅緱鎵╁睍澶氫簡(jiǎn)涔便?nbsp;
  

榪欐槸鎴戠殑鐩綍緇撴瀯:

1
./quick-cocos2d-x/lib/cocos2d-x/scripting/lua/lua_extensions/protobuf/pb.c
  
鐒跺悗寮濮嬩慨鏀規(guī)墿灞曠▼搴忛厤緗枃浠? lua_extensions.c
 

璺緞涓猴細(xì)

1
./quick-cocos2d-x/lib/cocos2d-x/scripting/lua/lua_extensions/lua_extensions.c
 

鐩墠鏄竴涓笉瓚?0琛岀殑灝忔枃浠訛紝 鎴戞墦綆楀叏閮ㄨ創(chuàng)榪涙潵錛?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include "lua_extensions.h" 
   
#if __cplusplus 
extern "C"
#endif 
    
// cjson 
#include "cjson/lua_cjson.h" 
    
    
// zlib 
#include "zlib/lua_zlib.h" 
    
    
// lpack 
#include "lpack/lpack.h" 
    
    
// socket 
#include "socket/luasocket.h" 
#include "socket/mime.h" 
#include "socket/socket_scripts.h" 
    
    
// filesystem 
#include "filesystem/lfs.h" 
    
    
// lsqlite3 
#include "lsqlite3/lsqlite3.h" 
    
    
#include "protobuf/pb.c"   //寮曠敤protobuf 搴撴枃浠?nbsp;
    
    
static luaL_Reg luax_exts[] = { 
     {"cjson", luaopen_cjson_safe}, 
     {"zlib", luaopen_zlib}, 
     {"pack", luaopen_pack}, 
     {"socket.core", luaopen_socket_core}, 
     {"mime.core", luaopen_mime_core}, 
     {"lfs", luaopen_lfs}, 
     {"lsqlite3", luaopen_lsqlite3}, 
     {NULL, NULL} 
}; 
    
    
void luaopen_lua_extensions(lua_State *L) 
     // load extensions 
     luaL_Reg* lib = luax_exts; 
     lua_getglobal(L, "package"); 
     lua_getfield(L, -1, "preload"); 
     for (; lib->func; lib++) 
     
         lua_pushcfunction(L, lib->func); 
         lua_setfield(L, -2, lib->name); 
     
     lua_pop(L, 2); 
    
    
     // load extensions script 
     luaopen_socket_scripts(L); 
     luaopen_pb(L);   //榪欐槸鍔犲叆鐨刾rotobuf 鎵╁睍娉ㄥ唽鍚?nbsp;
    
    
#if __cplusplus 
} // extern "C" 
#endif
鑷蟲 錛?protobuf 鎵╁睍閮ㄥ垎灝辯畻鎵╁睍瀹屾垚浜?jiǎn)銆?nbsp;
 
紜鏄惁鎴愬姛鏀寔 錛?鍙互鍦╭uick 欏圭洰鏈鍏堣璋冪敤鐨刲ua鏂囦歡涓拷鍔?require "pb" 鍋氭祴璇曘?nbsp;
 
*浣嗚繖鏃跺欓氳繃protoc 杞爜鍚庡緱鍒扮殑lua鏂囦歡榪樹笉鑳借瑙f瀽銆?nbsp;
 
絎洓姝?浠庨」鐩腑鍖呭惈protobuf鐨?lua搴?/strong>
protoc-gen-lua/protobuf/榪欎釜鐩綍涓嬮潰錛?榪樻湁澶ч噺鐨?lua鏂囦歡錛?鏄敤鏉ユ敮鎸乸roto杞爜鍚庣殑鏂囦歡瑙f瀽璋冪敤鐨勩?涓嶈兘灝戜簡(jiǎn)榪欎簺鏂囦歡銆?nbsp;
 
澶嶅埗protoc-gen-lua/protobuf鏂囦歡澶?鍒伴」鐩腑 scripts鐩綍涓嬨? 
  

鐩綍緇撴瀯搴旇鏄繖鏍風(fēng)殑錛?

1
[PROJECT]/scripts/protobuf/*.lua
 
鐒跺悗錛?闇瑕佸憡璇夋鏋訛紝浠庡摢閲屽彲浠ュ紩鐢ㄥ埌瀹冦?nbsp;
 

淇敼main.lua 鍦╮equire("appxxxxxx") 涓婇潰 錛?鍔犲叆涓嬮潰鐨勪唬鐮侊細(xì)

1
package.path = package.path .. ";./protobuf/?.lua;./scripts/protobuf/?.lua;"
 
榪欎釜鏂規(guī)硶錛?鑳戒繚璇佺▼搴忓湪琚紪璇戝埌鎵嬫満涔嬪悗浠嶇劧鍙互緇х畫璁塊棶榪欎釜搴撱?nbsp;
  
***鍗冧竾鍒妸杞爜鐨刾roto鏂囦歡鏀懼埌[PROJECT]/scripts/protobuf 鐩綍閲岄潰.涓嶄俊鍙互璇曡瘯銆?
 
鐜板湪錛?欏圭洰鏀寔protobuf 鏂囦歡鐨勮В鏋愪簡(jiǎn)銆?
 
絎簲姝? 閲嶆柊緙栬瘧player-x
濡傛灉涓嶄範(fàn)鎯敤player-x璋冭瘯錛?榪欎釜姝ラ涓嶆槸蹇呴』鐨勩?nbsp;
 

榪涘叆player-x qt婧愮爜鐩綍 錛?

1
cd quick-cocos2d-x/player/proj.qt
 

浣跨敤qmake 鏂囦歡鎵цquick-x.pro 鏂囦歡 

1
qmake ./quick-x.pro
 
緇х畫錛?
make 
 
絳夊緟緇撴潫錛?灝嗗緱鍒扮殑quick-x-player鏂囦歡錛?nbsp;
 
鏀懼埌錛歲uick-cocos2d-x/player/bin/mac/ 鐩綍涓嬶紝 榪欐牱sublime text 瑁匭uickXDev 鎵╁睍鐨勭洿鎺ュ彲浠ョ敤銆?nbsp;
  
**濡傛灉鏄痬ac os 10.9 緋葷粺錛?鍙兘緙栬瘧涓嶈繃鍘籶layer-x紼嬪簭銆?鎴戦亣鍒頒簡(jiǎn)榪欎釜闂銆?nbsp;
 
浼?xì)鎻惤C洪敊璇? pb.c:28:10: fatal error: 'endian.h' file not found 
 

濡傛灉閿欒淇℃伅鐩稿悓錛?淇敼鏂囦歡:

1
./quick-cocos2d-x/lib/cocos2d-x/scripting/lua/lua_extensions/protobuf/pb.c
 

鏌ユ壘琛?

1
#include <endian.h>
  

涓存椂鍙樻洿涓猴細(xì)

1
#include <machine/endian.h>
  
鐒跺悗閲嶆柊緙栬瘧 player-x 
 
make 灝辮凍澶熶簡(jiǎn) 
 
make
 
**player-x 緙栬瘧瀹屾瘯鍚庯紝 鍗冧竾瑕佸皢endian.h 寮曠敤鏀瑰洖鍘熸潵鐨?#include <endian.h> 錛?鍚﹀垯鎵撳寘鍒版墜鏈虹殑鏃跺欏張鍥炴彁紺烘枃浠舵壘涓嶅埌浜?jiǎn)銆?nbsp;


]]>
Lua娉ㄥ唽鍥炶皟鍒癈++http://m.shnenglu.com/colorful/archive/2015/01/17/209553.html澶氬僵浜虹敓澶氬僵浜虹敓Sat, 17 Jan 2015 03:12:00 GMThttp://m.shnenglu.com/colorful/archive/2015/01/17/209553.htmlhttp://m.shnenglu.com/colorful/comments/209553.htmlhttp://m.shnenglu.com/colorful/archive/2015/01/17/209553.html#Feedback0http://m.shnenglu.com/colorful/comments/commentRss/209553.htmlhttp://m.shnenglu.com/colorful/services/trackbacks/209553.htmlhttp://cn.cocos2d-x.org/tutorial/show?id=1896

鎬濊礬

鍍忔墍鏈夎璦涓鏍鳳紝緇戝畾鍥炶皟涓昏鏄墽琛岀殑浠誨姟鎵ц鍒扮壒瀹氭儏褰㈢殑鏃跺欙紝璋冪敤瀵圭敤鍥炶皟鏂規(guī)硶銆?鏈枃涔熶竴鏍鳳紝Lua娉ㄥ唽鍥炶皟鍒癈++鐨勬牳蹇?jī)鎬濊礬鏄紝褰揅浠g爜鎵ц鍒扮壒瀹氱壒瀹氭儏褰㈢殑鏃跺欙紝璋冪敤Lua鐨勬柟娉曘?/p>

鎴戣繖閲屼嬌鐢ㄧ殑鏄敤lua_stack鐩存帴璋冪敤lua鐨勬柟娉曪紝娌℃湁浣跨敤Cocos2d-x灝佽鐨勯偅涓猟ispatcher錛屽洜涓虹啛鎮(zhèn)夐偅涓牸寮忓お澧ㄨ抗浜?jiǎn)銆?/p>


涓昏姝ラ濡備笅

  • 緙撳瓨Lua鍑芥暟鍦↙ua鐜涓殑寮曠敤

  • 鍦–浠g爜鐨勫湴鏂圭敤C鐨勬柟寮忚緗ソ鍥炶皟

  • 鍦–浠g爜鍥炶皟鍑芥暟鎵ц鐨勬椂鍊欙紝璋冪敤lua鍑芥暟


瀹炵幇

  • C浠g爜緇戝畾鍥炶皟錛岃皟鐢↙ua鍑芥暟

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
void ArmatureNode::registerMovementEventHandler(int handler)
{
    unregisterMovementEventHandler();  //縐婚櫎涔嬪墠娉ㄥ唽鐨勭洃鍚?/code>
    _movementHandler = handler;         //緙撳瓨lua鍑芥暟鐨勫紩鐢?nbsp;榪欎釜鍚庤竟璇?/code>
     
    auto dispatcher = getCCEventDispatcher();
     
    auto f = [this](cocos2d::EventCustom *event) //娉ㄥ唽c浠g爜褰㈠紡鐨勫洖璋?nbsp;榪欓噷鐢╢unction鍋?/code>
    {
        auto eventData = (dragonBones::EventData*)(event->getUserData());
        auto type = (int) eventData->getType();
        auto movementId = eventData->animationState->name;
        auto lastState = eventData->armature->getAnimation()->getLastAnimationState();
         
        auto stack = cocos2d::LuaEngine::getInstance()->getLuaStack();
        stack->pushObject(this"db.ArmatureNode");
        stack->pushInt(type);
        stack->pushString(movementId.c_str(), movementId.size());        
        //閫氳繃LuaStack璋冪敤lua閲岀殑鍑芥暟    鏈鍚庝竴涓弬鏁拌緗弬鏁頒釜鏁?/code>
        stack->executeFunctionByHandler(_movementHandler, 3);
    };
     
    dispatcher->addCustomEventListener(dragonBones::EventData::COMPLETE, f);
}
void ArmatureNode::unregisterMovementEventHandler(void)
{
    if (0 != _movementHandler)
    {
        cocos2d::LuaEngine::getInstance()->removeScriptHandler(_movementHandler); //縐婚櫎lua鍑芥暟鐨勭粦瀹?/code>
        _movementHandler = 0;
    }
}
  • 鎻愪緵Lua鍑芥暟緇戝畾鍒癈鐨勬柟娉?  

涓婅竟鐨勮繖涓嚱鏁扮洿鎺ョ敤cocos閲岀殑genbinding.py 鏄棤娉曟紜敓鎴怢ua閲屽彲璋冪敤鐨勬帴鍙g殑錛岄渶瑕佹墜鍔ㄧ紪鍐欑粦瀹氭柟娉?

璇磋繖涓緱鐢ㄥ埌Cocos2d-x涓彁渚涚殑涓涓柟娉曪細(xì)toluafix_ref_function浼?xì)鎶婁竴涓狶ua鏍堜腑鐨勬柟娉曡漿鎴愪竴涓猧nt錛屼互渚緾++涓皟鐢ㄣ傛垜浼?xì)鍦ㄦ渶鍚庨潰璇磋繖涓?/p>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int tolua_db_DBCCArmature_registerMovementEventHandler(lua_State* tolua_S)
{
    if (NULL == tolua_S)
        return 0;
    int argc = 0;
     
    dragonBones::ArmatureNode* self = nullptr;
    self = static_cast<dragonBones::ArmatureNode*>(tolua_tousertype(tolua_S,1,0)); //絎竴涓弬鏁?nbsp;灝辨槸lua閲岀殑self
     
    argc = lua_gettop(tolua_S) - 1;
     
    if (1 == argc)
    {
        //絎簩涓弬鏁幫紝灝辨槸Lua閲岀殑function 榪欓噷瑕侀氳繃toluafix_ref_function榪欎釜鍑芥暟鏄犲皠鎴愪竴涓狪nt鍊?/code>
        int handler = (toluafix_ref_function(tolua_S,2,0)); 
        self->registerMovementEventHandler(handler);
         
        return 0;
    }
    return 0;
}

 

  • 灝嗙粦瀹氭柟娉曠粦瀹氬埌Lua鐜閲?/p>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
int extends_ArmatureNode(lua_State* tolua_S)
{
    lua_pushstring(tolua_S, "db.ArmatureNode");//涔嬪墠db.ArmatureNode鏄氳繃鑴氭湰緇戝畾鍦╨ua閲屻傝繖閲屽彧鍋氭墿灞?/code>
    lua_rawget(tolua_S, LUA_REGISTRYINDEX);
    if (lua_istable(tolua_S,-1))
    {
        lua_pushstring(tolua_S,"registerMovementEventHandler");
        lua_pushcfunction(tolua_S,tolua_db_DBCCArmature_registerMovementEventHandler);
        lua_rawset(tolua_S,-3);
    }
     
    lua_pop(tolua_S, 1);
    return 0;
}
  • Lua閲岃緗洖璋冨埌C++

1
2
3
4
5
6
7
8
 local arm = db.ArmatureNode:create("Dragon")
    local animation = arm:getAnimation()
    animation:gotoAndPlay("walk")
    arm:registerMovementEventHandler(
        function(...)
            print(...) 
        end
    )


-嫻嬭瘯

鎵撳嵃鍥炶皟杈撳嚭錛屾祴璇曢氳繃 userdata 8 walk


鍏朵粬

  • toluafix_ref_function 浠ュ強(qiáng) toluafix_get_function_by_refid

榪?涓や釜鏂規(guī)硶鏄浉浜掑搴旂殑 toluafix_ref_function榪欎釜鏂規(guī)硶鍦ㄦ敞鍐岃〃涓婂皢涓涓猯ua鐨刦unction涓庝竴涓猣unction_id鐢熸垚鏄犲皠 toluafix_get_function_by_refid 鏂規(guī)硶鍙互閫氳繃鍓嶄竴涓柟娉曠敓鎴愮殑function_id鏉ヨ緇戝畾鐨刲ua function鏀懼埌鏍堥《

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//
TOLUA_API int toluafix_ref_function(lua_State* L, int lo, int def)
{
    if (!lua_isfunction(L, lo)) return 0;
    s_function_ref_id++;                            //function_id 鍔?
    lua_pushstring(L, TOLUA_REFID_FUNCTION_MAPPING);//鍦ㄦ敞鍐岃〃涓婏紝瀛樻斁luafunction 鏄犲皠table 鐨刱ey鍘嬫爤
    lua_rawget(L, LUA_REGISTRYINDEX);               //鑾峰彇鏂規(guī)硶鏄犲皠琛紝鏀懼湪鏍堥《
    lua_pushinteger(L, s_function_ref_id);          //function_id鍘嬫爤
    lua_pushvalue(L, lo);                           //lo鏈夋晥澶勭儲(chǔ)寮曞鏄痩ua鏂規(guī)硶錛宭ua鏂規(guī)硶鎷瘋礉錛屽帇鏍?/code>
 
 
    lua_rawset(L, -3);                        //鐢熸垚鏄犲皠 
    lua_pop(L, 1);                                              
    return s_function_ref_id;
}
TOLUA_API void toluafix_get_function_by_refid(lua_State* L, int refid)
{
    lua_pushstring(L, TOLUA_REFID_FUNCTION_MAPPING);            //瀛樻斁luafunction 鏄犲皠table 鐨刱ey鍘嬫爤
    lua_rawget(L, LUA_REGISTRYINDEX);                           //鑾峰彇鏂規(guī)硶鏄犲皠琛紝鏀懼湪鏍堥《
    lua_pushinteger(L, refid);                                  //function_id鍘嬫爤
    lua_rawget(L, -2);                                          //鑾峰彇鍒扮殑luafunction 鏀懼埌鏍堥《
    lua_remove(L, -2);                                          //
}
  • executeFunctionByHandler

executeFunctionByHandler 榪欎釜鏂規(guī)硶鍙槸閫氳繃toluafix_get_function_by_refid 鑾峰彇鍒癴unction鐒跺悗閫氳繃lua_pcall 鏂規(guī)硶璋冪敤錛屼唬鐮佸氨涓嶅啓浜?jiǎn)銆?/p>



]]>
lua鎰忚http://m.shnenglu.com/colorful/archive/2015/01/13/209495.html澶氬僵浜虹敓澶氬僵浜虹敓Tue, 13 Jan 2015 02:54:00 GMThttp://m.shnenglu.com/colorful/archive/2015/01/13/209495.htmlhttp://m.shnenglu.com/colorful/comments/209495.htmlhttp://m.shnenglu.com/colorful/archive/2015/01/13/209495.html#Feedback0http://m.shnenglu.com/colorful/comments/commentRss/209495.htmlhttp://m.shnenglu.com/colorful/services/trackbacks/209495.html

]]>
Lua鐨剆leep鍑芥暟http://m.shnenglu.com/colorful/archive/2015/01/01/209374.html澶氬僵浜虹敓澶氬僵浜虹敓Thu, 01 Jan 2015 08:59:00 GMThttp://m.shnenglu.com/colorful/archive/2015/01/01/209374.htmlhttp://m.shnenglu.com/colorful/comments/209374.htmlhttp://m.shnenglu.com/colorful/archive/2015/01/01/209374.html#Feedback0http://m.shnenglu.com/colorful/comments/commentRss/209374.htmlhttp://m.shnenglu.com/colorful/services/trackbacks/209374.html

涓涓笉騫哥殑娑堟伅鏄疞ua涓病鏈夊唴緗畇leep鍑芥暟錛屾垜浠渶瑕丏IY銆傛湁4縐嶆柟娉曞彲浠ュ疄鐜皊leep鍑芥暟錛屽涓嬶細(xì)

鏂規(guī)硶1

--鍦ㄤ竴涓寰幆涓緗竴涓煩鍑烘潯浠訛紝浣嗘槸榪欐牱鐨勫仛娉曚細(xì)鍗犵敤澶ч噺CPU璧勬簮錛屽己鐑堜笉鎺ㄨ崘浣跨敤鍝?/p>

function sleep(n)

   local t0 = os.clock()

   while os.clock() - t0 <= n do end

鏂規(guī)硶2

--璋冪敤緋葷粺鐨剆leep鍑芥暟錛屼笉娑堣桟PU錛屼絾鏄疻indows緋葷粺涓病鏈夊唴緗繖涓懡浠わ紙濡傛灉浣犲張瀹夎Cygwin紲為┈鐨勪篃琛岋級(jí)銆傛帹鑽愬湪Linux緋葷粺涓嬌鐢ㄨ鏂規(guī)硶

function sleep(n)

   os.execute("sleep " .. n)

鏂規(guī)硶3

--铏界劧Windows娌℃湁鍐呯疆sleep鍛戒護(hù)錛屼絾鏄垜浠彲浠ョ◢寰埄鐢ㄤ笅ping鍛戒護(hù)鐨勬ц川

function sleep(n)

   if n > 0 then os.execute("ping -n " .. tonumber(n + 1) .. " localhost > NUL") end

鏂規(guī)硶4

--浣跨敤socket搴撲腑select鍑芥暟錛屽彲浠ヤ紶閫?.1緇檔錛屼嬌寰椾紤鐪犵殑鏃墮棿綺懼害杈懼埌姣綰у埆銆?/p>

‍require("socket")

function sleep(n)

   socket.select(nil, nil, n)



]]>
涓涓緢涓嶉敊鐨刲ua鏁欑▼http://m.shnenglu.com/colorful/archive/2014/12/19/209257.html澶氬僵浜虹敓澶氬僵浜虹敓Fri, 19 Dec 2014 11:12:00 GMThttp://m.shnenglu.com/colorful/archive/2014/12/19/209257.htmlhttp://m.shnenglu.com/colorful/comments/209257.htmlhttp://m.shnenglu.com/colorful/archive/2014/12/19/209257.html#Feedback0http://m.shnenglu.com/colorful/comments/commentRss/209257.htmlhttp://m.shnenglu.com/colorful/services/trackbacks/209257.htmlhttp://www.cnblogs.com/stephen-liu74/category/360139.html
  Lua鍙互璋冪敤C鍑芥暟鐨勮兘鍔涘皢鏋佸ぇ鐨勬彁楂楲ua鐨勫彲鎵╁睍鎬у拰鍙敤鎬с傚浜庢湁浜涘拰鎿嶄綔緋葷粺鐩稿叧鐨勫姛鑳斤紝鎴栬呮槸瀵規(guī)晥鐜囪姹傝緝楂樼殑妯″潡錛屾垜浠畬鍏ㄥ彲浠ラ氳繃C鍑芥暟 鏉ュ疄鐜幫紝涔嬪悗鍐嶉氳繃Lua璋冪敤鎸囧畾鐨凜鍑芥暟銆傚浜庨偅浜涘彲琚獿ua璋冪敤鐨凜鍑芥暟鑰岃█錛屽叾鎺ュ彛蹇呴』閬靛驚Lua瑕佹眰鐨勫艦寮忥紝鍗?span style="color: #0000ff;">typedef int (*lua_CFunction)(lua_State* L)銆?綆鍗曡鏄庝竴涓嬶紝璇ュ嚱鏁扮被鍨嬩粎浠呭寘鍚竴涓〃紺篖ua鐜鐨勬寚閽堜綔涓哄叾鍞竴鐨勫弬鏁幫紝瀹炵幇鑰呭彲浠ラ氳繃璇ユ寚閽堣繘涓姝ヨ幏鍙朙ua浠g爜涓疄闄呬紶鍏ョ殑鍙傛暟銆傝繑鍥炲兼槸鏁?鍨嬶紝琛ㄧず璇鍑芥暟灝嗚繑鍥炵粰Lua浠g爜鐨勮繑鍥炲兼暟閲忥紝濡傛灉娌℃湁榪斿洖鍊鹼紝鍒檙eturn 0鍗沖彲銆傞渶瑕佽鏄庣殑鏄紝C鍑芥暟鏃犳硶鐩存帴灝嗙湡姝g殑榪斿洖鍊艱繑鍥炵粰Lua浠g爜錛岃屾槸閫氳繃铏氭嫙鏍堟潵浼犻扡ua浠g爜鍜孋鍑芥暟涔嬮棿鐨勮皟鐢ㄥ弬鏁板拰榪斿洖鍊肩殑銆傝繖閲屾垜浠皢浠?緇嶄袱縐峀ua璋冪敤C鍑芥暟鐨勮鍒欍?br />    1. C鍑芥暟浣滀負(fù)搴旂敤紼嬪簭鐨勪竴閮ㄥ垎銆?/span>
澶嶅埗浠g爜
 1 #include <stdio.h>  2 #include <string.h>  3 #include <lua.hpp>  4 #include <lauxlib.h>  5 #include <lualib.h>  6   7 //寰匧ua璋冪敤鐨凜娉ㄥ唽鍑芥暟銆?/span>  8 static int add2(lua_State* L)  9 { 10     //媯(gè)鏌ユ爤涓殑鍙傛暟鏄惁鍚堟硶錛?琛ㄧずLua璋冪敤鏃剁殑絎竴涓弬鏁?浠庡乏鍒板彸)錛屼緷姝ょ被鎺ㄣ?11     //濡傛灉Lua浠g爜鍦ㄨ皟鐢ㄦ椂浼犻掔殑鍙傛暟涓嶄負(fù)number錛岃鍑芥暟灝嗘姤閿欏茍緇堟紼嬪簭鐨勬墽琛屻?/span> 12     double op1 = luaL_checknumber(L,1); 13     double op2 = luaL_checknumber(L,2); 14     //灝嗗嚱鏁扮殑緇撴灉鍘嬪叆鏍堜腑銆傚鏋滄湁澶氫釜榪斿洖鍊鹼紝鍙互鍦ㄨ繖閲屽嬈″帇鍏ユ爤涓?/span> 15     lua_pushnumber(L,op1 + op2); 16     //榪斿洖鍊肩敤浜庢彁紺鴻C鍑芥暟鐨勮繑鍥炲兼暟閲忥紝鍗沖帇鍏ユ爤涓殑榪斿洖鍊兼暟閲忋?/span> 17     return 1; 18 } 19  20 //鍙︿竴涓緟Lua璋冪敤鐨凜娉ㄥ唽鍑芥暟銆?/span> 21 static int sub2(lua_State* L) 22 { 23     double op1 = luaL_checknumber(L,1); 24     double op2 = luaL_checknumber(L,2); 25     lua_pushnumber(L,op1 - op2); 26     return 1; 27 } 28  29 const char* testfunc = "print(add2(1.0,2.0)) print(sub2(20.1,19))"; 30  31 int main() 32 { 33     lua_State* L = luaL_newstate(); 34     luaL_openlibs(L); 35     //灝嗘寚瀹氱殑鍑芥暟娉ㄥ唽涓篖ua鐨勫叏灞鍑芥暟鍙橀噺錛屽叾涓涓涓瓧絎︿覆鍙傛暟涓篖ua浠g爜 36     //鍦ㄨ皟鐢–鍑芥暟鏃朵嬌鐢ㄧ殑鍏ㄥ眬鍑芥暟鍚嶏紝絎簩涓弬鏁頒負(fù)瀹為檯C鍑芥暟鐨勬寚閽堛?/span> 37     lua_register(L, "add2", add2); 38     lua_register(L, "sub2", sub2); 39     //鍦ㄦ敞鍐屽畬鎵鏈夌殑C鍑芥暟涔嬪悗錛屽嵆鍙湪Lua鐨勪唬鐮佸潡涓嬌鐢ㄨ繖浜涘凡緇忔敞鍐岀殑C鍑芥暟浜?jiǎn)銆?/span> 40     if (luaL_dostring(L,testfunc)) 41         printf("Failed to invoke.\n"); 42     lua_close(L); 43     return 0; 44 }
澶嶅埗浠g爜

    2. C鍑芥暟搴撴垚涓篖ua鐨勬ā鍧椼?/span>
    灝嗗寘鍚獵鍑芥暟鐨勪唬鐮佺敓鎴愬簱鏂囦歡錛屽Linux鐨剆o錛屾垨Windows鐨凞LL錛屽悓鏃舵嫹璐濆埌Lua浠g爜鎵鍦ㄧ殑褰撳墠鐩綍錛屾垨鑰呮槸LUA_CPATH鐜鍙?閲忔墍鎸囧悜鐨勭洰褰曪紝浠ヤ究浜嶭ua瑙f瀽鍣ㄥ彲浠ユ紜畾浣嶅埌浠栦滑銆傚湪鎴戝綋鍓嶇殑Windows緋葷粺涓紝鎴戝皢鍏禼opy鍒?C:\Program Files\Lua\5.1\clibs\"錛岃繖閲屽寘鍚簡(jiǎn)鎵鏈塋ua鍙皟鐢ㄧ殑C搴撱傝濡備笅C璇█浠g爜鍜屽叧閿ф敞閲婏細(xì)

澶嶅埗浠g爜
 1 #include <stdio.h>  2 #include <string.h>  3 #include <lua.hpp>  4 #include <lauxlib.h>  5 #include <lualib.h>  6   7 //寰呮敞鍐岀殑C鍑芥暟錛岃鍑芥暟鐨勫0鏄庡艦寮忓湪涓婇潰鐨勪緥瀛愪腑宸茬粡緇欏嚭銆? 8 //闇瑕佽鏄庣殑鏄紝璇ュ嚱鏁板繀欏諱互C鐨勫艦寮忚瀵煎嚭錛屽洜姝xtern "C"鏄繀欏葷殑銆? 9 //鍑芥暟浠g爜鍜屼笂渚嬬浉鍚岋紝榪欓噷涓嶅啀璧樿堪銆?/span> 10 extern "C" int add(lua_State* L)  11 { 12     double op1 = luaL_checknumber(L,1); 13     double op2 = luaL_checknumber(L,2); 14     lua_pushnumber(L,op1 + op2); 15     return 1; 16 } 17  18 extern "C" int sub(lua_State* L) 19 { 20     double op1 = luaL_checknumber(L,1); 21     double op2 = luaL_checknumber(L,2); 22     lua_pushnumber(L,op1 - op2); 23     return 1; 24 } 25  26 //luaL_Reg緇撴瀯浣撶殑絎竴涓瓧孌典負(fù)瀛楃涓詫紝鍦ㄦ敞鍐屾椂鐢ㄤ簬閫氱煡Lua璇ュ嚱鏁扮殑鍚嶅瓧銆?27 //絎竴涓瓧孌典負(fù)C鍑芥暟鎸囬拡銆?28 //緇撴瀯浣撴暟緇勪腑鐨勬渶鍚庝竴涓厓绱犵殑涓や釜瀛楁鍧囦負(fù)NULL錛岀敤浜庢彁紺篖ua娉ㄥ唽鍑芥暟宸茬粡鍒拌揪鏁扮粍鐨勬湯灝俱?/span> 29 static luaL_Reg mylibs[] = {  30     {"add", add}, 31     {"sub", sub}, 32     {NULL, NULL}  33 };  34  35 //璇搴撶殑鍞竴鍏ュ彛鍑芥暟銆傚叾鍑芥暟絳懼悕絳夊悓浜庝笂闈㈢殑娉ㄥ唽鍑芥暟銆傝濡備笅鍑犵偣璇存槑錛?36 //1. 鎴戜滑鍙互灝嗚鍑芥暟綆鍗曠殑鐞嗚В涓烘ā鍧楃殑宸ュ巶鍑芥暟銆?37 //2. 鍏跺嚱鏁板悕蹇呴』涓簂uaopen_xxx錛屽叾涓瓁xx琛ㄧずlibrary鍚嶇О銆侺ua浠g爜require "xxx"闇瑕佷笌涔嬪搴斻?38 //3. 鍦╨uaL_register鐨勮皟鐢ㄤ腑錛屽叾絎竴涓瓧絎︿覆鍙傛暟涓烘ā鍧楀悕"xxx"錛岀浜屼釜鍙傛暟涓哄緟娉ㄥ唽鍑芥暟鐨勬暟緇勩?39 //4. 闇瑕佸己璋冪殑鏄紝鎵鏈夐渶瑕佺敤鍒?xxx"鐨勪唬鐮侊紝涓嶈C榪樻槸Lua錛岄兘蹇呴』淇濇寔涓鑷達(dá)紝榪欐槸Lua鐨勭害瀹氾紝 40 //   鍚﹀垯灝嗘棤娉曡皟鐢ㄣ?/span> 41 extern "C" __declspec(dllexport) 42 int luaopen_mytestlib(lua_State* L)  43 { 44     const char* libName = "mytestlib"; 45     luaL_register(L,libName,mylibs); 46     return 1; 47 }
澶嶅埗浠g爜

    瑙佸涓婰ua浠g爜錛?/p>

1 require "mytestlib"  --鎸囧畾鍖呭悕縐?/span> 2  3 --鍦ㄨ皟鐢ㄦ椂錛屽繀欏繪槸package.function 4 print(mytestlib.add(1.0,2.0)) 5 print(mytestlib.sub(20.1,19))


]]>
鐢╒S2010緙栬瘧luabindhttp://m.shnenglu.com/colorful/archive/2014/09/02/208207.html澶氬僵浜虹敓澶氬僵浜虹敓Tue, 02 Sep 2014 09:56:00 GMThttp://m.shnenglu.com/colorful/archive/2014/09/02/208207.htmlhttp://m.shnenglu.com/colorful/comments/208207.htmlhttp://m.shnenglu.com/colorful/archive/2014/09/02/208207.html#Feedback0http://m.shnenglu.com/colorful/comments/commentRss/208207.htmlhttp://m.shnenglu.com/colorful/services/trackbacks/208207.htmlhttp://m.shnenglu.com/eros/archive/2009/04/29/81508.aspx

     瀛︿簡(jiǎn)涓孌墊椂闂碙ua錛屾樉鐒剁洿鎺ュ湪欏圭洰涓嬌鐢ㄦ槸寰堜笉鏂逛究錛実oogle浜?jiǎn)涓涓嬶紝浼間箮澶у閮藉luabind榪欎釜lua鍖呰綾婚潚鐫愭湁鍔狅紝浜庢槸鎴戜篃闅忓ぇ鍔挎兂鐢ㄧ敤鐪嬨?br />     鍏堝仛濂藉噯澶囧伐浣滐紝涓嬭澆浜?jiǎn)luabin 0.8.1婧愮爜錛孊oost 1.3.8婧愮爜鍜宭ua 5.1.4婧愮爜錛岀紪璇戠幆澧冩槸VS2008 SP1銆備箣鍓嶅湪緗戜笂鐪嬪埌涓浜涙枃绔犺榪欎簺寮婧愯蔣浠朵箣闂寸殑鐗堟湰渚濊禆姣旇緝鏁忔劅錛屽彲鑳戒細(xì)鏈夎繖鏍烽偅鏍風(fēng)殑闂錛屽姩鎵嬩箣鍓嶆湁浜涙兌鎭愩?br />     騫歌繍鐨勬槸錛岀紪璇戣繃紼嬪緢欏哄埄錛屽涓嬶細(xì)
     1.緙栬瘧lua 5.1.4
     榪涘叆VS2008鐨勫懡浠よ宸ュ叿錛屽畾浣嶅埌l(fā)ua鐨勬簮鐮佺洰褰曚笅錛屾墽琛屽懡浠tc\luavs.bat錛屾病浠涔堥棶棰樼殑璇濆緢蹇氨鍙互緙栬瘧濂絣ua錛屽緱鍒發(fā)ua51.lib鍜宭ua51.dll銆?br />     2.緙栬瘧luabind
     瑙e帇涓嬭澆鍥炴潵鐨刲uabind鍘嬬緝鍖咃紝鍋囪瑙e帇鍒癲:\luabind-0.8.1\錛孊oost瑙e帇鍒癲:\boost 1_38_0\錛宭ua瑙e帇鍒癲:\lua 5.1.4\
     鍦?VS涓柊寤轟竴涓潤(rùn)鎬佸簱欏圭洰錛屽皢d:\luabind-0.8.1\src涓嬬殑婧愮爜鍏ㄩ儴娣誨姞鍒伴」鐩腑錛岀劧鍚庡湪欏圭洰涓柊寤簂uabind鍜宭uabind \detail\涓や釜铏氭嫙鏂囦歡澶癸紝瀵瑰簲鐨勫皢d:\luabind-0.8.1\luabind鍜宒:\luabind-0.8.1\luabind \detail涓嬬殑鏂囦歡娣誨姞鍒版枃浠跺す涓?br />     鐒跺悗涓洪」鐩坊鍔犻檮鍔犲寘鍚洰褰曪紝鍙抽敭鐐瑰嚮欏圭洰鑺傜偣->灞炴?>閰嶇疆灞炴?>C\C++鏍囩涓嬶紝鍦ㄩ檮鍔犲寘鍚洰褰曚腑濉叆d: \luabind-0.8.1\錛沝:\boost 1_38_0\k錛沝:\lua 5.1.4\src\銆傜劧鍚庝慨鏀歸」鐩瓧絎﹂泦涓哄瀛楄妭瀛楃闆嗐?br />     鍑嗗灝辯華錛岀敓鎴愰」鐩傚湪鎴戠殑鐜涓紪璇戝緢欏哄埄錛屾病鏈夊嚭鐜頒換浣曢棶棰橈紝鎴愬姛鍚庝細(xì)寰楀埌l(fā)uabind.lib銆?br />
     鎺ヤ笅鏉ュ氨鎸夌収鎯緥鏉ュ啓涓涓猦ello world紼嬪簭浣滀負(fù)浣跨敤luabind鐨勭涓姝ャ?br />     鍦╒S涓柊寤轟竴涓帶鍒跺彴欏圭洰錛岀被鍨嬩負(fù)DLL錛屽懡鍚嶉」鐩負(fù)Hello World錛岀劧鍚庨敭鍏ヤ互涓嬩唬鐮侊細(xì)

 1#include "stdafx.h"
 2#include <iostream>
 3#include <luabind/luabind.hpp>
 4
 5void greet()
 6{
 7    std::cout << "hello world!\n";
 8}

 9
10extern "C" int __declspec(dllexport) init(lua_State* L)
11{
12    using namespace luabind;
13
14    open(L);
15
16    module(L)
17    [
18        def("greet"&greet)
19    ];
20
21    return 0;
22}


   娉ㄦ剰錛屽湪Windows鐜涓媔nit鍑芥暟涔嬪墠鏄鍔?__declspec(dllexport)鎵嶈兘灝嗗嚱鏁板鍑虹殑錛岃宭uabind鐨勬枃妗d腑鐨勭幆澧冩槸linux錛岄粯璁や笉鐢ㄥ姞 __declspec(dllexport)涔熷彲浠ュ鍑?灝卞洜涓鴻繖涓姌鑵句簡(jiǎn)鎴戝崐澶╂墠鎶奾ello word鎴愬姛榪愯)銆?br />   緙栬瘧欏圭洰錛?璁板緱灝唋uabind.lib鍜宭ua51.lib娣誨姞鍒伴摼鎺ラ夐」涓細(xì)欏圭洰灞炴?>榪炴帴鍣?>杈撳叆->闄勫姞渚濊禆鏂囦歡錛屽姞鍏uabind.lib鍜宭ua51.lib)銆?br />   灝唄ello world.dll鏀懼埌l(fā)ua51.dll鍜宭ua.exe鎵鍦ㄧ殑鐩綍涓嬨?br />   鎵撳紑lua鍛戒護(hù)琛岋紝閿叆:
    
   嫻嬭瘯鎴愬姛錛宔njoy銆?/p>



]]>
嫻呮瀽Lua涓璽able鐨勯亶鍘?http://m.shnenglu.com/colorful/archive/2014/08/25/208122.html澶氬僵浜虹敓澶氬僵浜虹敓Mon, 25 Aug 2014 06:29:00 GMThttp://m.shnenglu.com/colorful/archive/2014/08/25/208122.htmlhttp://m.shnenglu.com/colorful/comments/208122.htmlhttp://m.shnenglu.com/colorful/archive/2014/08/25/208122.html#Feedback0http://m.shnenglu.com/colorful/comments/commentRss/208122.htmlhttp://m.shnenglu.com/colorful/services/trackbacks/208122.htmlhttp://rangercyh.blog.51cto.com/1444712/1032925

褰撴垜鍦ㄥ伐浣滀腑浣跨敤lua榪涜寮鍙戞椂錛屽彂鐜板湪lua涓湁4縐嶆柟寮忛亶鍘嗕竴涓猼able錛屽綋鐒?dòng)灱屼粠鏈川涓婃潵璇村叾瀹為兘涓鏍鳳紝鍙槸褰㈠紡涓嶅悓錛岃繖鍥涚鏂瑰紡鍒嗗埆鏄細(xì)

  1. for key, value in pairs(tbtest) do  
  2. XXX  
  3. end 
  4.  
  5. for key, value in ipairs(tbtest) do  
  6. XXX  
  7. end 
  8.  
  9. for i=1, #(tbtest) do  
  10.     XXX  
  11. end 
  12.  
  13. for i=1, table.maxn(tbtest) do  
  14.     XXX  
  15. end 

鍓嶄袱縐嶆槸娉涘瀷閬嶅巻錛屽悗涓ょ鏄暟鍊煎瀷閬嶅巻銆傚綋鐒朵綘榪樹細(xì)璇磍ua鐨則able閬嶅巻榪樻湁寰堝縐嶆柟娉曞晩錛屾病閿欙紝涓嶈繃鏈甯歌鐨勮繖浜涢亶鍘嗙‘瀹炴湁蹇呰寮勬竻妤氥?/p>

榪欏洓縐嶆柟寮忓悇鏈夌壒鐐癸紝鐢變簬鍦ㄥ伐浣滀腑鎴戝嚑涔庢瘡澶╅兘浼?xì)鋴社敤閬嶅巻table鐨勬柟娉曪紝涓寮濮嬩篃闈炲父鍥版儜榪欎簺鏂瑰紡鐨勪笉鍚岋紝涓孌墊椂闂村悗鎵嶆笎娓愭槑鐧斤紝榪欓噷鎴戜篃鏄妸 鑷繁鐨勪竴鐐圭粡楠屽憡璇夊ぇ瀹訛紝瀵硅窡鎴戜竴鏍風(fēng)殑lua鍒濆鑰呬篃璁告湁浜涘府鍔╋紙鑷沖皯褰撳垵鎴戝湪鍐欑殑鏃跺欏湪緗戜笂灝辨壘浜?jiǎn)寰堜箙锛屼笉鐭ラ亾鏄洜湄?fù)澶х墰浠兘璁や負(fù)榪欎簺寰堢畝鍗曪紝涓嶉渶瑕?璇達(dá)紝榪樻槸鍥犱負(fù)鎴戠錛岃繛榪欓兘瑕侀棶錛夈?/p>

棣栧厛瑕佹槑紜竴鐐癸紝灝辨槸lua涓璽able騫墮潪鍍忔槸C/C++涓殑鏁扮粍涓鏍鋒槸欏哄簭瀛樺偍鐨勶紝鍑嗙‘鏉ヨlua涓殑table鏇村姞鍍忔槸C++涓殑map錛岄?榪嘖ey瀵瑰簲瀛樺偍Value錛屼絾鏄茍闈為『搴忔潵淇濆瓨key-value瀵癸紝鑰屾槸浣跨敤浜?jiǎn)hash鐨勬柟寮忥紝榪欐牱鑳藉鏇村姞蹇熺殑璁塊棶key瀵瑰簲鐨剉alue錛屾垜浠?涔熺煡閬揾ash琛ㄧ殑閬嶅巻闇瑕佷嬌鐢ㄦ墍璋撶殑榪唬鍣ㄦ潵榪涜錛屽悓鏍鳳紝lua涔熸湁鑷繁鐨勮凱浠e櫒錛屽氨鏄笂闈?縐嶉亶鍘嗘柟寮忎腑鐨刾airs鍜宨pairs閬嶅巻銆備絾鏄痩ua 鍚屾椂鎻愪緵浜?jiǎn)鎸夌収key鏉ラ亶鍘嗙殑鏂瑰紡錛堝彟澶栦袱縐嶏紝瀹炶川涓婃槸涓縐嶏級(jí)錛屾寮忓洜涓哄畠鎻愪緵浜?jiǎn)杩櫩U嶆寜key鐨勯亶鍘嗭紝鎵嶉犳垚浜?jiǎn)鎴戜竴寮濮嬬殑鍥版儜錛屾垜涓搴﹁涓簂ua涓叧浜?table鐨勯亶鍘嗘槸鎸夌収鎴憈able瀹氫箟key鐨勯『搴忔潵鐨勩?/p>

涓嬮潰渚濇鏉ヨ璁插洓縐嶉亶鍘嗘柟寮忥紝棣栧厛鏉ョ湅for k,v in pairs(tbtest) do榪欑鏂瑰紡錛?/p>

鍏堢湅鏁堟灉錛?/p>

  1. tbtest = {  
  2.     [1] = 1,  
  3.     [2] = 2,  
  4.     [3] = 3,  
  5.     [4] = 4,  
  6.  
  7. for key, value in pairs(tbtest) do  
  8.     print(value)  
  9. end 

鎴戣涓鴻緭鍑哄簲璇ユ槸1錛?錛?錛?錛屽疄闄呬笂鐨勮緭鍑烘槸1錛?錛?錛?銆傛垜鍥犱負(fù)榪欎釜閫犳垚浜?jiǎn)涓涓猙ug錛岃繖鏄悗璇濄?/p>

涔熷氨鏄for k,v in pairs(tbtest) do 榪欐牱鐨勯亶鍘嗛『搴忓茍闈炴槸tbtest涓璽able鐨勬帓鍒楅『搴忥紝鑰屾槸鏍規(guī)嵁tbtest涓璳ey鐨刪ash鍊兼帓鍒楃殑欏哄簭鏉ラ亶鍘嗙殑銆?/p>

 

褰撶劧錛屽悓鏃秎ua涔熸彁渚涗簡(jiǎn)鎸夌収key鐨勫ぇ灝忛『搴忔潵閬嶅巻鐨勶紝娉ㄦ剰錛屾槸澶у皬欏哄簭錛屼粛鐒朵笉鏄痥ey瀹氫箟鐨勯『搴忥紝榪欑閬嶅巻鏂瑰紡灝辨槸for k,v in ipairs(tbtest) do銆?/p>

for k,v in ipairs(tbtest) do 榪欐牱鐨勫驚鐜繀欏昏姹倀btest涓殑key涓洪『搴忕殑錛岃屼笖蹇呴』鏄粠1寮濮嬶紝ipairs鍙細(xì)浠?寮濮嬫寜榪炵畫鐨刱ey欏哄簭閬嶅巻鍒発ey涓嶈繛緇負(fù)姝€?/p>

  1. tbtest = {  
  2. [1] = 1,  
  3. [2] = 2,  
  4. [3] = 3,  
  5. [5] = 5,  
  6.  
  7. for k,v in ipairs(tbtest) do  
  8. print(v)  
  9. end 

鍙細(xì)鎵撳嵃1錛?錛?銆傝?鍒欎笉浼?xì)鏄窘C恒?/p>

  1. local tbtest = {  
  2. [2] = 2,  
  3. [3] = 3,  
  4. [5] = 5,  
  5.  
  6. for k,v in ipairs(tbtest) do  
  7. print(v)  
  8. end 

榪欐牱灝變竴涓兘涓嶄細(xì)鎵撳嵃銆?/p>

 

絎笁縐嶉亶鍘嗘柟寮忔湁涓縐嶇濂囩殑絎﹀彿'#'錛岃繖涓鍙風(fēng)殑浣滅敤鏄槸鑾峰彇table鐨勯暱搴︼紝姣斿錛?/p>

  1. tbtest = {  
  2. [1] = 1,  
  3. [2] = 2,  
  4. [3] = 3,  
  5. }  
  6. print(#(tbtest)) 

鎵撳嵃鐨勫氨鏄?

  1. tbtest = {  
  2. [1] = 1,  
  3. [2] = 2,  
  4. [6] = 6,  
  5. }  
  6. print(#(tbtest)) 

榪欐牱鎵撳嵃鐨勫氨鏄?錛岃屼笖鍜宼able鍐呯殑瀹氫箟欏哄簭娌℃湁鍏崇郴錛屾棤璁轟綘鏄惁鍏堝畾涔夌殑key涓?鐨勫鹼紝‘#’閮戒細(xì)鏌ユ壘key涓?鐨勫煎紑濮嬨?/p>

濡傛灉table鐨勫畾涔夋槸榪欐牱鐨勶細(xì)

  1. tbtest = {  
  2. ["a"] = 1,  
  3. [2] = 2,  
  4. [3] = 3,  
  5.  
  6. print(#(tbtest)) 

閭d箞鎵撳嵃鐨勫氨鏄?浜?jiǎn)銆傚洜涓?#8216;#’娌℃湁鎵懼埌key涓?鐨勫箋傚悓鏍鳳細(xì)

  1. tbtest = {  
  2. [“a”] = 1,  
  3. [“b”] = 2,  
  4. [“c”] = 3,  
  5. }  
  6. print(#(tbtest)) 

鎵撳嵃鐨勪篃鏄?

鎵浠ワ紝for i=1, #(tbtest) do榪欑閬嶅巻錛屽彧鑳介亶鍘嗗綋tbtest涓瓨鍦╧ey涓?鐨剉alue鏃舵墠浼?xì)鍑虹幇缁撴灉锛岃屼笖鏄寜鐓ey浠?寮濮嬩緷嬈¢掑1鐨勯『搴忔潵閬嶅巻錛屾壘鍒頒竴涓掑涓嶆槸1鐨勬椂鍊欏氨緇撴潫涓嶅啀閬嶅巻錛屾棤璁哄悗闈㈡槸鍚︿粛鐒舵槸欏哄簭鐨刱ey錛屾瘮濡傦細(xì)

 

table.maxn鑾峰彇鐨勫彧閽堝鏁存暟鐨刱ey錛屽瓧絎︿覆鐨刱ey鏄病鍔炴硶鑾峰彇鍒扮殑錛屾瘮濡傦細(xì)

  1. tbtest = {  
  2. [1] = 1,  
  3. [2] = 2,  
  4. [3] = 3,  
  5. }  
  6. print(table.maxn(tbtest)) 
  7.  
  8.  
  9. tbtest = {  
  10. [6] = 6,  
  11. [1] = 1,  
  12. [2] = 2,  
  13. }  
  14. print(table.maxn(tbtest)) 

榪欐牱鎵撳嵃鐨勫氨鏄?鍜?錛岃屼笖鍜宼able鍐呯殑瀹氫箟欏哄簭娌℃湁鍏崇郴錛屾棤璁轟綘鏄惁鍏堝畾涔夌殑key涓?鐨勫鹼紝table.maxn閮戒細(xì)鑾峰彇鏁存暟鍨媖ey涓殑鏈澶у箋?/p>

濡傛灉table鐨勫畾涔夋槸榪欐牱鐨勶細(xì)

  1. tbtest = {  
  2. ["a"] = 1,  
  3. [2] = 2,  
  4. [3] = 3,  
  5. }  
  6. print(table.maxn(tbtest)) 

閭d箞鎵撳嵃鐨勫氨鏄?浜?jiǎn)銆傚鏋渢able鏄細(xì)

  1. tbtest = {  
  2. [“a”] = 1,  
  3. [“b”] = 2,  
  4. [“c”] = 3,  
  5. }  
  6. print(table.maxn(tbtest))  
  7. print(#(tbtest)) 

閭d箞鎵撳嵃鐨勫氨鍏ㄩ儴鏄?浜?jiǎn)銆?/p>

 

 

鎹㈠彞璇濊錛屼簨瀹炰笂鍥犱負(fù)lua涓璽able鐨勬瀯閫犺〃杈懼紡闈炲父鐏墊椿錛屽湪鍚屼竴涓猼able涓紝浣犲彲浠ラ殢鎰忓畾涔夊悇縐嶄綘鎯寵鐨勫唴瀹癸紝姣斿錛?/p>

  1. tbtest = {  
  2. [1] = 1,  
  3. [2] = 2,  
  4. [3] = 3,  
  5. ["a"] = 4,  
  6. ["b"] = 5,  

鍚屾椂鐢變簬榪欎釜鐏墊椿鎬э紝浣犱篃娌℃湁鍔炴硶鑾峰彇鏁翠釜table鐨勯暱搴︼紝鍏跺疄鍦╟oding鐨勮繃紼嬩腑錛屼綘浼?xì)鍙戠帋图屼綘鐪熸鎯宠鑾峰彇鏁翠釜table闀垮害鐨勫湴鏂瑰嚑涔庢病鏈夛紝浣犳昏兘閲囧彇涓縐嶉潪甯稿閥濡欑殑瀹氫箟鏂瑰紡錛屾妸榪欑闇瑕佽幏鍙栨暣涓猼able闀垮害鐨勬搷浣滈伩鍏嶆帀錛屾瘮濡傦細(xì)

  1. tbtest = {  
  2. tbaaa = {  
  3. [1] = 1,  
  4. [2] = 2,  
  5. [3] = 3,  
  6. },  
  7. ["a"] = 4,  
  8. ["b"] = 5,  

浣犲彲鑳戒細(xì)鎯婅錛屼笂闈㈣繖縐峵able璇ュ浣曢亶鍘嗗憿錛?/p>

  1. for k, v in pairs(tbtest) do  
  2. print(k, v)  
  3. end 

杈撳嚭鏄細(xì)a 4 b 5 tbaaa table:XXXXX銆?/p>

鐢辨浣犲彲浠ョ湅鍒幫紝鍏跺疄鍦╰able涓畾涔変竴涓猼able錛岃繖涓猼able鐨勫悕瀛楀氨鏄痥ey錛屽搴旂殑鍐呭鍏跺疄鏄痶able鐨勫湴鍧銆?/p>

褰撶劧錛屽鏋滀綘鐢?/p>

  1. for k, v in ipairs(tbtest) do  
  2. print(k,v)  
  3. end 

鏉ラ亶鍘嗙殑璇濓紝灝變粈涔堥兘涓嶄細(xì)鎵撳嵃錛屽洜涓烘病鏈塳ey涓?鐨勫箋備絾褰撲綘澧炲姞涓涓猭ey涓?鐨勫兼椂錛宨pairs鍙細(xì)鎵撳嵃閭d竴涓鹼紝鐜板湪浣犳槑鐧絠pairs鏄浣曞伐浣滅殑鍚с?/p>

鏃㈢劧榪欓噷璋堝埌浜?jiǎn)閬嶅巻锛尀p涓涓嬬洰鍓嶇湅鍒扮殑鍑犵閽堝table鐨勯亶鍘嗘柟寮忥細(xì)

for i=1, #tbtest do --榪欑鏂瑰紡鏃犳硶閬嶅巻鎵鏈夌殑鍏冪礌錛屽洜涓?#'鍙細(xì)鑾峰彇tbtest涓粠key涓?寮濮嬬殑key榪炵畫鐨勯偅鍑犱釜鍏冪礌錛屽鏋滄病鏈塳ey涓?錛岄偅涔堣繖涓驚鐜皢鏃犳硶榪涘叆

for i=1, table.maxn(tbtest) do --榪欑鏂瑰紡鍚屾牱鏃犳硶閬嶅巻鎵鏈夌殑鍏冪礌錛屽洜涓簍able.maxn鍙細(xì)鑾峰彇key涓烘暣鏁頒腑鏈澶х殑閭d釜鏁幫紝閬嶅巻鐨勫厓绱犲叾瀹炴槸鏌ユ壘 tbtest[1]~tbtest[鏁存暟key涓渶澶у糫錛屾墍浠ワ紝瀵逛簬string鍋歬ey鐨勫厓绱犱笉浼?xì)鍘绘煡鎵惧Q岃屼笖榪欎箞鏌ユ壘鐨勬晥鐜囦綆涓嬶紝鍥犱負(fù)濡傛灉浣犳暣鏁?key涓畾涔夌殑鏈澶х殑key鏄?0000錛岀劧鑰?0000浠ヤ笅鐨刱ey娌℃湁鍑犱釜錛岄偅涔堣繖涔堥亶鍘嗕細(xì)嫻垂寰堝鏃墮棿錛屽洜涓轟細(xì)浠?寮濮嬬洿鍒?0000姣忎竴涓厓绱犻兘 浼?xì)鏌ユ壘涓閬嶏紝瀹為檯涓婂ぇ澶氭暟鍏冪礌閮芥槸涓嶅瓨鍦ㄧ殑錛屾瘮濡傦細(xì)

  1. tbtest = {  
  2. [1] = 1,  
  3. [10000] = 2,  
  4. }  
  5. local count = 0  
  6. for i=1, table.maxn(tbtest) do  
  7. count = count + 1  
  8. print(tbtest[i])  
  9. end  
  10. print(count) 

浣犱細(xì)鐪嬪埌鎵撳嵃緇撴灉鏄涔堢殑鍧戠埞錛屽彧鏈?鍜?0000鏄湁鎰忎箟鐨勶紝鍏朵粬鐨勫叏鏄痭il錛岃屼笖count鏄?0000銆傝楁椂闈炲父涔呫備竴鑸垜涓嶈繖涔堥亶鍘嗐備絾鏄湁涓縐嶆儏鍐典笅鍙堝繀欏昏繖涔堥亶鍘嗭紝榪欎釜鍦ㄦ垜鐨勫伐浣滀腑榪樼湡鐨勯亣鍒頒簡(jiǎn)錛岃繖鏄悗璇濓紝絳夎瀹屼簡(jiǎn)鍐嶈皥銆?/p>

  1. for k, v in pairs(tbtest) do 

榪欎釜鏄敮涓涓縐嶅彲浠ヤ繚璇侀亶鍘唗btest涓瘡涓涓厓绱犵殑鏂瑰紡錛屽埆楂樺叴鐨勫お鏃╋紝榪欑閬嶅巻涔熸湁瀹冭嚜韜殑緙虹偣錛屽氨鏄亶鍘嗙殑欏哄簭涓嶆槸鎸夌収tbtest瀹氫箟鐨勯『搴忔潵閬嶅巻鐨勶紝榪欎釜鍓嶉潰璁插埌榪囷紝褰撶劧錛屽浜庝笉闇瑕侀『搴忛亶鍘嗙殑鐢ㄦ硶錛岃繖涓槸鍞竴鍙潬鐨勯亶鍘嗘柟寮忋?/p>

  1. for k, v in ipairs(tbtest) do 

榪欎釜鍙細(xì)閬嶅巻tbtest涓璳ey涓烘暣鏁幫紝鑰屼笖蹇呴』浠?寮濮嬬殑閭d簺榪炵畫鍏冪礌錛屽鏋滄病鏈?寮濮嬬殑key錛岄偅涔堣繖涓亶鍘嗘槸鏃犳晥鐨勶紝鎴戜釜浜鴻涓鴻繖縐嶉亶鍘嗘柟 寮忓畬鍏ㄥ彲浠ヨ鏀歸爐able鍜宖or i=1, #(tbtest) do鐨勬柟寮忔潵浠f浛錛屽洜涓篿pairs鐨勬晥鏋滃拰'#'鐨勬晥鏋滐紝鍦ㄩ亶鍘嗙殑鏃跺欐槸綾諱技鐨勶紝閮芥槸鎸夌収key鐨勯掑1欏哄簭鏉ラ亶鍘嗐?/p>

濂斤紝鍐嶆潵璋堣皥涓轟粈涔堟垜闇瑕佷嬌鐢╰able.maxn榪欑闈炲父嫻垂鐨勬柟寮忔潵閬嶅巻錛屽湪宸ヤ綔涓紝 鎴戦亣鍒頒竴涓棶棰橈紝灝辨槸闇瑕佹妸褰撳墠鐨勫懆搴忥紝杞崲鎴愬搴旂殑濂栧姳錛岀畝鍗曟潵璇達(dá)紝灝辨槸浠庝竴涓椿鍔ㄥ紑濮嬬畻璧鳳紝姣忓懆鐨勫鍔遍兘涓嶆槸鍥哄畾鐨勶紝姣斿1~4鍛ㄧ粰涓縐嶅鍔憋紝5~8 鍛ㄧ粰鍙︿竴縐嶅鍔憋紝鎴栬呮槸涓縐嶆帓鍚嶅鍔憋紝1~8鍚嶇粰涓縐嶅鍔憋紝9~16鍚嶇粰鍙︿竴縐嶅鍔憋紝榪欑鎯呭喌涓嬶紝鎴戞牴鎹暱涔呯殑C璇█鐨勪範(fàn)鎯紝浼?xì)鎶妕able瀹氫箟鎴愯繖涓牱 瀛愶細(xì)

  1. tbtestAward = {  
  2. [8] = 1,  
  3. [16] = 3,  

榪欎釜浠h〃錛?~8緇欏鍔?錛?~16緇欏鍔?銆傝繖鏍峰畾涔夌殑濂藉鏄鍔辨垜鍙渶瑕佸啓涓嬈★紙榪欓噷鐨勫鍔辯敤鏁板瓧鍋氫簡(jiǎn)綆鍖栵紝瀹為檯涓婂鍔變篃鏄竴涓ぇ鐨?table錛岄噷闈㈣繕鏈夐潪甯稿鏉傜殑緇撴瀯錛夈傜劧鍚庢垜灝遍亣鍒頒竴涓棶棰橈紝鍗蟲垜闇瑕佹牴鎹懆搴忔暟錛屾垨鑰呮槸鎺掑悕搴忔暟鏉ョ‘瀹氱粰鍝竴縐嶅鍔憋紝姣斿褰撳墠鍛ㄥ簭鏁版槸5錛岄偅涔堟垜搴旇 緇欐垜瀹氫箟濂界殑key涓?鐨勯偅涓妗e鍔憋紝鎴栬呭綋鍓嶅懆搴忔暟鏄?5錛岄偅涔堟垜搴旇緇欏鍔?銆傜敱姝よ鑰呯湅鍑猴紝鍏跺疄鎴戝畾涔夌殑key鏄竴涓垎鐣岋紝灝忎簬榪欎釜key鑰屽ぇ浜庝笂 涓涓猭ey錛岄偅涔堝氨緇欒繖涓猭ey鐨勫鍔憋紝榪欏氨鏄垜鍒ゆ柇鐨勬潯浠躲傞昏緫涓婃病鏈夐棶棰橈紝浣嗘槸lua鐨勯亶鍘嗘柟寮忓嵈鎶婃垜鐙犵嫚鍦板潙浜?jiǎn)涓鎶娿傝鑰呭彲浠ヨ嚜宸辨兂涓鎯蟲垜涓婇潰浠嬬粛 鐨?縐嶉亶鍘嗘柟寮忥紝璇ョ敤鍝竴縐嶆潵瀹炵幇鎴戠殑榪欑闇姹傚憿錛熻繖涓嚱鏁扮殑澶ц嚧妗嗘灦濡備笅錛?/p>

  1. function GetAward(nSeq)  
  2. for 閬嶅巻鏁翠釜濂栧姳琛?nbsp;do  
  3. if 婊¤凍key鐨勬潯浠?nbsp;then  
  4. return 榪斿洖瀵瑰簲濂栧姳鐨刱ey  
  5. end  
  6. end  
  7. return nil  
  8. end 

鎴戜篃涓嶅崠鍏沖瓙浜?jiǎn)锛屽垎鍒潵璇翠竴璇村惂錛岄鍏堝洜涓烘垜鐨刱ey涓嶆槸榪炵畫鐨勶紝鑰屼笖娌℃湁key涓?鐨勫鹼紝鎵浠pairs鍜?#'閬嶅巻鏄病鐢ㄧ殑銆傝繖縐嶆儏鍐典笅鐞嗘兂 鐨勯亶鍘嗚矊浼兼槸pairs錛屽洜涓哄畠浼?xì)閬嶅巻鎴戠殑姣忎竴涓厓绱狅紝浣嗘槸璇昏呬笉瑕佸繕璁頒簡(jiǎn)錛宲airs閬嶅巻騫墮潪鏄寜鐓ф垜瀹氫箟鐨勯『搴忔潵閬嶅巻錛屽鏋滄垜鐪熺殑浣跨敤鐨勬潯浠舵槸錛氬簭鏁?nSeq灝忎簬榪欎釜key鑰屽ぇ浜庝笂涓涓猭ey錛岄偅涔堝氨榪斿洖榪欎釜key銆傞偅涔堟垜鏃犳硶淇濊瘉紼嬪簭鎵ц鐨勬紜э紝鍥犱負(fù)key鐨勯『搴忔湁鍙兘鏄貢鐨勶紝涔熷氨鏄湁鍙兘鍏堥亶鍘?鍒扮殑鏄痥ey涓?6鐨勫鹼紝鐒跺悗鎵嶆槸key涓?鐨勫箋?/p>

榪欎箞鐪嬫潵鎴戝彧鍓╀笅table.maxn榪欎箞涓縐嶆柟寮忎簡(jiǎn)錛屼簬鏄垜鍐欎笅浜?jiǎn)杩櫩U嶄唬鐮侊細(xì)

  1. for i=1, table.maxn(tbtestAward) do  
  2. if tbtestAward[i] ~= nil then  
  3. if nSeq <= i then  
  4. return i  
  5. end  
  6. end  
  7. end  

榪欎箞鍐欐晥鐜囩‘瀹炰綆涓嬶紝鍥犱負(fù)瀹為檯涓婅繕鏄亶鍘嗕簡(jiǎn)浠巏ey涓?寮濮嬬洿鍒発ey涓簍able.maxn涓棿鐨勬瘡涓涓鹼紝涓嶈繃鑳藉婊¤凍鎴戜笂闈㈢殑瑕佹眰銆傚綋鏃舵垜鏄?榪欎箞瀹炵幇鐨勶紝鍥犱負(fù)榪欎釜濂栧姳琛ㄤ細(xì)涓嶆柇鐨勫彂鐢熷彉鍖栵紝榪欐牱鎴戞瘡嬈′慨鏀瑰彧闇瑕佷慨鏀硅繖涓鍔辮〃灝辮兘澶熸弧瓚寵姹備簡(jiǎn)錛屽悗鏉ユ垜鎯充簡(jiǎn)鎯籌紝瑙夊緱鍏跺疄鎴戝鏋滆嚜宸卞啀瀹氫箟涓涓簭鏁拌漿 鎹㈡垚瀵瑰簲鐨勫鍔辨暟縐嶇被鐨勮〃灝卞彲浠ラ伩鍏嶈繖縐嶅潙鐖圭殑鎿嶄綔浜?jiǎn)锛屼笉杩囧鏋滃鍔卞彂鐢熶慨鏀瑰Q屾垜闇瑕佺粺涓鎺掓煡鐨勫湴鏂瑰氨涓嶆榪欎釜濂栧姳琛ㄤ簡(jiǎn)錛屾潈琛″啀涓夛紝鎴戣繕鏄病鏈夋敼錛屽氨榪欎箞 鍐欎簡(jiǎn)銆傛病鍔炴硶錛屼笉鏂彉鍖栫殑闇姹傚凡緇忔妸鎴戠(緇冪殑蹇樿浜?jiǎn)绋嬪簭鐨勬渶楂樼悊鎯熾傛垜鐢氳嚦鎰挎剰鐗虹壊綆楁硶鐨勬晥鐜囪屽幓榪芥眰鏀瑰姩鐨勭ǔ瀹氭с傚湪姝ゅ搥鎮(zhèn)肩▼搴忓憳鐨勬棤濂堛傛垜榪欑鏃墮棿鎹?絀洪棿鐨勫仛娉曠‘瀹炰笉鐭ラ亾濂戒笉濂姐?/p>

鍚庢潵鎴戝湪銆奝rogramming In Lua銆嬩腑鐪嬪埌浜?jiǎn)涓涓濂囩殑榪唬鍣紝浣跨敤瀹冨氨鍙互杈懼埌鎴戞兂瑕佺殑榪欑閬嶅巻鏂瑰紡錛岃屼笖涓嶉渶瑕佸幓閬嶅巻閭d簺涓嶅瓨鍦ㄧ殑key銆傚畠鐨勬柟娉曟槸鎶婁綘鎵闇瑕侀亶鍘嗙殑table 閲岀殑key鎸夌収閬嶅巻欏哄簭鏀懼埌鍙︿竴涓復(fù)鏃剁殑table涓幓錛岃繖鏍峰彧闇瑕侀亶鍘嗚繖涓復(fù)鏃剁殑table鎸夐『搴忓彇鍑哄師table涓殑key灝卞彲浠ヤ簡(jiǎn)銆傚涓嬶細(xì)

棣栧厛瀹氫箟涓涓凱浠e櫒錛?/p>

  1. function pairsByKeys(t)  
  2.     local a = {}  
  3.     for n in pairs(t) do  
  4.         a[#a+1] = n  
  5.     end  
  6.     table.sort(a)  
  7.     local i = 0  
  8.     return function()  
  9.         i = i + 1  
  10.         return a[i], t[a[i]]  
  11.     end  
  12. end 

鐒跺悗鍦ㄩ亶鍘嗙殑鏃跺欎嬌鐢ㄨ繖涓凱浠e櫒灝卞彲浠ヤ簡(jiǎn)錛宼able鍚屼笂錛岄亶鍘嗗涓嬶細(xì)

  1. for key, value in pairsByKeys(tbtestAward) do  
  2.  if nSeq <= key then  
  3. return key  
  4. end  
  5. end 

騫朵笖鍚庢潵鎴戝彂鐜版湁浜?jiǎn)杩欎釜鑴P浠e櫒錛屾垜鏍規(guī)湰涓嶉渶瑕佸厛鍋氫竴姝ヨ幏鍙栨槸鍝竴妗f鐨勫鍔辯殑鎿嶄綔錛岀洿鎺ヤ嬌鐢ㄨ繖涓凱浠e櫒榪涜鍙戝灝卞彲浠ヤ簡(jiǎn)銆傚ぇ甯堝氨鏄ぇ甯堬紝鎴戞庝箞灝辨病鎯沖埌鍛紒

榪樻湁浜涜瘽鎴戣繕娌℃湁璇達(dá)紝姣斿涓婇潰鏁板煎瀷閬嶅巻涔熷茍闈炴槸鍍忕湅璧鋒潵閭f牱榪涜閬嶅巻鐨勶紝姣斿涓嬮潰鐨勯亶鍘嗭細(xì)

  1. tbtest = {  
  2.     [1] = 1,  
  3.     [2] = 2,  
  4.     [3] = 3,  
  5.     [5] = 5,  
  6.  
  7. for i=1, #(tbtest) do  
  8.     print(tbtest[i])  
  9. end 

鎵撳嵃鐨勯『搴忔槸錛?錛?錛?銆備笉浼?xì)鎵撳?錛屽洜涓?宸茬粡涓嶅湪table鐨勬暟緇勬暟鎹潡涓簡(jiǎn)錛屾垜浼拌鏄鏀懼埌浜?jiǎn)hash鏁版嵁鍧椾腑錛屼絾鏄綋鎴戜慨鏀瑰叾涓殑涓浜沰ey鏃訛紝姣斿錛?/p>

  1. tbtest = {  
  2.     [1] = 1,  
  3.     [2] = 2,  
  4.     [4] = 4,  
  5.     [5] = 5,  
  6.  
  7. for i=1, #(tbtest) do  
  8.     print(tbtest[i])  
  9. end 

鎵撳嵃鐨勫唴瀹瑰嵈鏄細(xì)1錛?錛宯il錛?錛?銆傝繖涓湴鏂瑰張閬嶅巻鍒頒簡(jiǎn)涓棿娌℃湁鐨刱ey鍊鹼紝騫朵笖榪樿兘緇х畫閬嶅巻涓嬪幓銆傛垜鏈榪戞鍦ㄧ湅lua婧愮爜涓璽able鐨勫疄 鐜伴儴鍒嗭紝宸茬粡鏄庣櫧浜?jiǎn)鏄庝箞鍥炰簨錛屼笉榪囨垜鎯崇瓑鎴戣兘澶熸洿鍔犳竻鏅扮殑闃愯堪l(fā)ua涓璽able鐨勫疄鐜拌繃紼嬩簡(jiǎn)鍐嶅悜澶у浠嬬粛銆傜敤鎴戝笀鍌呯殑璇濊灝辨槸涓嶈浣跨敤涓浜涙湭瀹氫箟鐨勮 涓烘柟娉曪紝閬垮厤鍦ㄥ伐浣滀腑鍑洪敊錛屼笉榪囧伐浣滃錛屾垜榪樻槸甯屾湜鑳芥槑鐧芥湭瀹氫箟鐨勮涓轟腑閭d簺蹇呯劧鎬э紝o(鋦訛縛鋦?o 鍞夛紒鍥犳灉璁虹殑瀛╁瓙浼や笉璧楓傜瓑鎴戜笅涓綃囧崥鏂囧垎鏋恖ua婧愮爜涓璽able鐨勫疄鐜板氨鑳藉鏇村姞娓呮櫚鐨勮鏄庤繖浜涗簡(jiǎn)銆?/p>



]]>
lua require dofile loadfile鍖哄埆 http://m.shnenglu.com/colorful/archive/2014/08/22/208088.html澶氬僵浜虹敓澶氬僵浜虹敓Fri, 22 Aug 2014 01:24:00 GMThttp://m.shnenglu.com/colorful/archive/2014/08/22/208088.htmlhttp://m.shnenglu.com/colorful/comments/208088.htmlhttp://m.shnenglu.com/colorful/archive/2014/08/22/208088.html#Feedback0http://m.shnenglu.com/colorful/comments/commentRss/208088.htmlhttp://m.shnenglu.com/colorful/services/trackbacks/208088.htmlhttp://blog.163.com/hbu_lijian/blog/static/126129153201422902256778/
1.dofile涓巐oadfile
dofile 褰撲綔Lua榪愯浠g爜鐨刢hunk鐨勪竴縐嶅師濮嬬殑鎿嶄綔銆俤ofile瀹為檯涓婃槸涓涓緟鍔╃殑鍑芥暟銆傜湡姝e畬鎴愬姛鑳界殑鍑芥暟鏄痩oadfile錛涗笌dofile涓嶅悓鐨勬槸 loadfile緙栬瘧浠g爜鎴愪腑闂寸爜騫朵笖榪斿洖緙栬瘧鍚庣殑chunk浣滀負(fù)涓涓嚱鏁幫紝鑰屼笉鎵ц浠g爜錛涘彟澶杔oadfile涓嶄細(xì)鎶涘嚭閿欒淇℃伅鑰屾槸榪斿洖閿欒浠c傛垜浠彲 浠ヨ繖鏍峰畾涔塪ofile錛?wbr>
function dofile (filename)
local f = assert(loadfile(filename))
return f()
end
濡?鏋渓oadfile澶辮觸assert浼?xì)鎶涘嚭閿欒銆俵oadfile鏇村姞鐏墊椿銆傚湪鍙戠敓閿欒鐨勬儏鍐典笅錛宭oadfile榪斿洖nil鍜岄敊璇俊鎭紝榪欐牱鎴戜滑灝卞彲浠?鑷畾涔夐敊璇鐞嗐傚彟澶栵紝濡傛灉鎴戜滑榪愯涓涓枃浠跺嬈$殑璇濓紝loadfile鍙渶瑕佺紪璇戜竴嬈★紝浣嗗彲澶氭榪愯銆俤ofile鍗存瘡嬈¢兘瑕佺紪璇戙?/div>
2.loadstring涓巐oadfile
loadstring涓巐oadfile鐩鎬技錛屽彧涓嶈繃瀹冧笉鏄粠鏂囦歡閲岃鍏hunk錛岃屾槸浠庝竴涓覆涓鍏ャ?/div>
f = loadstring("i = i + 1")
loadstring 鍑芥暟鍔熻兘寮哄ぇ錛屼絾浣跨敤鏃墮渶澶氬姞灝忓績(jī)銆傜‘璁ゆ病鏈夊叾瀹冪畝鍗曠殑瑙e喅闂鐨勬柟娉曞啀浣跨敤銆俵oadfile鍜宭oadstring閮戒笉浼?xì)鎶涘嚭閿欒锛屽鏋滃彂鐢熼敊璇粬浠?灝嗚繑鍥瀗il鍔犱笂閿欒淇℃伅銆傚彟澶栵紝loadfile鍜宭oadstring閮戒笉浼?xì)鏈夎竟鐣屾晥搴斾骇鐢熷Q屼粬浠粎浠呯紪璇慶hunk鎴愪負(fù)鑷繁鍐呴儴瀹炵幇鐨勪竴涓尶鍚嶅嚱 鏁般傞氬父瀵逛粬浠殑璇В鏄粬浠畾涔変簡(jiǎn)鍑芥暟銆侺ua涓殑鍑芥暟瀹氫箟鏄彂鐢熷湪榪愯鏃剁殑璧嬪艱屼笉鏄彂鐢熷湪緙栬瘧鏃躲?/div>
loadstring閫氬父鐢?浜庤繍琛岀▼搴忓閮ㄧ殑浠g爜錛屾瘮濡傝繍琛岀敤鎴瘋嚜瀹氫箟鐨勪唬鐮併傛敞鎰忥細(xì)loadstring鏈熸湜涓涓猚hunk錛屽嵆璇彞銆傚鏋滄兂瑕佸姞杞借〃杈懼紡錛岄渶瑕佸湪琛ㄨ揪寮忓墠鍔?return錛岄偅鏍峰皢榪斿洖琛ㄨ揪寮忕殑鍊箋俵oadstring榪斿洖鐨勫嚱鏁板拰鏅氬嚱鏁頒竴鏍鳳紝鍙互澶氭琚皟鐢ㄣ?/div>
print "enter your expression:"
local l = io.read()
local func = assert(loadstring("return " .. l))
print("the value of your expression is " .. func())
3.require涓巇ofile
銆傜矖鐣ョ殑璇磖equire鍜宒ofile瀹屾垚鍚屾牱鐨勫姛鑳戒絾鏈変袱鐐逛笉鍚岋細(xì)
1. require浼?xì)鎼滅储鐩綍鍔犺浇鏂囦?/div>
2. require浼?xì)鍒ゆ柇鏄惁鏂囦欢宸簿l忓姞杞介伩鍏嶉噸澶嶅姞杞藉悓涓鏂囦歡銆傜敱浜庝笂榪扮壒寰侊紝require鍦↙ua涓槸鍔犺澆搴撶殑鏇村ソ鐨勫嚱鏁般?/div>
require 浣跨敤鐨勮礬寰勫拰鏅氭垜浠湅鍒扮殑璺緞榪樻湁浜涘尯鍒紝鎴戜滑涓鑸鍒扮殑璺緞閮芥槸涓涓洰褰曞垪琛ㄣ俽equire鐨勮礬寰勬槸涓涓ā寮忓垪琛紝姣忎竴涓ā寮忔寚鏄庝竴縐嶇敱铏氭枃浠跺悕 錛坮equire鐨勫弬鏁幫級(jí)杞垚瀹炴枃浠跺悕鐨勬柟娉曘傛洿鏄庣‘鍦拌錛屾瘡涓涓ā寮忔槸涓涓寘鍚彲閫夌殑闂彿鐨勬枃浠跺悕銆傚尮閰嶇殑鏃跺橪ua浼?xì)棣栧厛灏嗛棶鍙风敤铏氭枃錃g鍚嶆浛鎹紝鐒跺悗 鐪嬫槸鍚︽湁榪欐牱鐨勬枃浠跺瓨鍦ㄣ傚鏋滀笉瀛樺湪緇х畫鐢ㄥ悓鏍風(fēng)殑鏂規(guī)硶鐢ㄧ浜屼釜妯″紡鍖歸厤銆備緥濡傦紝璺緞濡備笅錛?span style="line-height: 28px;">?;?.lua;c:\windows\?;/usr/local/lua/?/?.lua 
璋冪敤榪囩▼濡備笅錛?/span>
lili
lili.lua
c:\windows\lili
/usr/local/lua/lili/lili.lua
榪樹細(xì)鏈塻o/dll鏂囦歡銆?/div>
涓轟簡(jiǎn)紜畾璺緞錛孡ua棣栧厛媯(gè)鏌ュ叏灞鍙橀噺LUA_PATH鏄惁涓轟竴涓瓧絎︿覆錛屽鏋滄槸鍒欒涓鴻繖涓覆灝辨槸璺緞錛涘惁鍒檙equire媯(gè)鏌ョ幆澧冨彉閲廘UA_PATH鐨勫鹼紝濡傛灉涓や釜閮藉け璐equire浣跨敤鍥哄畾鐨勮礬寰勶紙鍏稿瀷鐨??;?.lua"錛?/div>
涓涓礬寰勪腑鐨勬ā寮忎篃鍙互涓嶅寘鍚棶鍙瘋(gè)屽彧鏄竴涓浐瀹氱殑璺緞錛屾瘮濡傦細(xì)?;?.lua;/usr/local/default.lua銆傝繖縐嶆儏鍐典笅錛宺equire娌℃湁鍖歸厤鐨勬椂鍊欏氨浼?xì)鋴社敤杩欎釜鍥哄畾鐨勬枃錃g錛堝綋鐒惰繖涓浐瀹氱殑璺緞蹇呴』鏀懼湪妯″紡鍒楄〃鐨勬渶鍚庢墠鏈夋剰涔夛級(jí)


]]> lua涓殑require鏈哄埗http://m.shnenglu.com/colorful/archive/2014/08/21/208082.html澶氬僵浜虹敓澶氬僵浜虹敓Thu, 21 Aug 2014 09:08:00 GMThttp://m.shnenglu.com/colorful/archive/2014/08/21/208082.htmlhttp://m.shnenglu.com/colorful/comments/208082.htmlhttp://m.shnenglu.com/colorful/archive/2014/08/21/208082.html#Feedback0http://m.shnenglu.com/colorful/comments/commentRss/208082.htmlhttp://m.shnenglu.com/colorful/services/trackbacks/208082.html
http://blog.chinaunix.net/uid-552961-id-2736410.html

lua涓殑require鏈哄埗

    涓轟簡(jiǎn)鏂逛究浠g爜綆$悊錛岄氬父浼?xì)鎶妉ua浠g爜鍒嗘垚涓嶅悓鐨勬ā鍧楋紝鐒跺悗鍦ㄩ氳繃require鍑芥暟鎶婂畠浠姞杞借繘鏉ャ?br />鐜板湪鐪嬬湅lua鐨剅equire鐨勫鐞嗘祦紼嬨?br />
1銆乺equire鏈哄埗鐩稿叧鐨勬暟鎹拰鍑芥暟
    package.path:淇濆瓨鍔犺澆澶栭儴妯″潡(lua涓?妯″潡"鍜?鏂囦歡"榪欎袱涓蹇電殑鍒嗙晫姣旇緝鍚硦錛屽洜涓鴻繖涓煎湪涓嶅悓鐨勬椂鍒諱細(xì)鎵紨涓嶅悓鐨勮鑹?鐨勬悳绱?璺緞錛岃繖縐嶈礬寰勬槸"妯℃澘寮忕殑璺緞"錛屽畠閲岄潰浼?xì)鍖呭惈鍙浛浠=W﹀彿"?",榪欎釜絎﹀彿浼?xì)琚浛鎹㈠Q岀劧鍚巐ua鏌ユ壘榪欎釜鏂囦歡鏄惁瀛樺湪錛屽鏋滃瓨鍦ㄥ氨浼?xì)璋冪敤鍏朵腑鐗瑰畾鐨勬?鍙c傚吀鍨嬬殑鍊間負(fù):
    "./?.lua;./?.lc;/usr/local/?/init.lua"
    濡傛灉lua浠g爜涓皟鐢?require("hello.world")
    閭d箞lua浼?xì)渚潒啤鏌ユ壘锛?xì)
    ./hello/world.lua ==>榪欓噷"hello.world"鍙樻垚浜?hello/world",騫舵浛鎹簡(jiǎn)妯″瀷"./?.lua"
    ./hello/world.lc
    .....
    (榪欑澶勭悊鏂瑰紡鍜宲ython綾諱技錛屽彧涓嶈繃涓嶉渶瑕乢_init__.py,涔熸湁璋冪敤python涓殑__init__.py)
    package.path鍦ㄨ櫄鎷熸満鍚姩鐨勬椂鍊欒緗紝濡傛灉瀛樺湪鐜鍙橀噺LUA_PATH錛岄偅涔堝氨鐢ㄨ鐜鍙橀噺浣滀負(fù)
    瀹冪殑鍊鹼紝騫舵妸榪欎釜鐜鍙橀噺涓殑";;"鏇挎崲涓簂uaconf.h涓畾涔夌殑榛樿鍊鹼紝濡傛灉涓嶅瓨鍦ㄨ鍙橀噺灝辯洿鎺ヤ嬌鐢?br />    luaconf.h瀹氫箟鐨勯粯璁ゅ?br />    
    package.cpath:浣滅敤鍜宲ackag.path涓鏍?浣嗗畠鏄敤浜庡姞杞界涓夋柟c搴撶殑銆傚畠鐨勫垵濮嬪煎彲浠ラ氳繃鐜鍙橀噺
    LUA_CPATH鏉ヨ緗?br />    
    package.loadlib(libname, func):鐩稿綋涓庢墜宸ユ墦寮c搴搇ibname, 騫跺鍑哄嚱鏁癴unc榪斿洖錛宭oadlib鍏跺疄鏄痩l_loadlib
    

2.require鐨勫鐞嗘祦紼嬶細(xì)
   require(modelname)
   require(鍦╨ua涓畠鏄痩l_require鍑芥暟)鐨勬煡鎵鵑『搴忓涓嬶細(xì)
       a.棣栧厛鍦╬ackage.loaded鏌ユ壘modelname,濡傛灉璇ユā鍧楀凡緇忓瓨鍦紝灝辯洿鎺ヨ繑鍥炲畠鐨勫?br />       b.鍦╬ackage.preload鏌ユ壘modelname, 濡傛灉preload瀛樺湪錛岄偅涔堝氨鎶婂畠浣滀負(fù)loader錛岃皟鐢╨oader(L)
       c.鏍規(guī)嵁package.path鐨勬ā寮忔煡鎵緇ua搴搈odelname錛岃繖涓簱鏄氳繃module鍑芥暟瀹氫箟鐨勶紝瀵逛簬欏跺眰鐨刲ua搴擄紝鏂囦歡鍚嶅拰搴撳悕鏄竴 鏍風(fēng)殑鑰屼笖涓嶉渶瑕佽皟鐢ㄦ樉寮忓湴鍦╨ua鏂囦歡涓皟鐢╩odule鍑芥暟(鍦╨l_require鍑芥暟涓彲浠ョ湅鍒板鐞嗘柟寮?錛屼篃灝辨槸璇磍ua浼?xì)鏍规嵁lua鏂囦歡鐩存帴瀹?鎴愪竴涓猯oader鐨勫垵濮嬪寲榪囩▼銆?br />       d.鏍規(guī)嵁package.cpath鏌ユ壘c搴擄紝榪欎釜搴撴槸絎﹀悎lua鐨勪竴浜涜鑼冪殑(export鍏鋒湁涓瀹氱壒寰佺殑鍑芥暟鎺ュ彛)錛宭ua鍏堝凡鍔ㄦ佺殑鏂瑰紡鍔犺澆璇搴擄紝鐒跺悗鍦ㄥ簱涓煡鎵懼茍璋冪敤鐩稿簲鍚嶅瓧鐨勬帴鍙o紝渚嬪:luaopen_hello_world
       e.宸茬涓涓?."涓哄垎鍓詫紝灝嗘ā鍧楀悕鍒掑垎涓?(main, sub)鐨勫艦寮忥紝鏍規(guī)嵁package.cpath鏌ユ壘main錛屽鏋滃瓨鍦紝灝卞姞杞借搴撳茍鏌ヨ鐩稿簲鐨勬帴鍙?luaopen_main_sub錛屼緥濡傦細(xì)鍏堟煡鎵?hello搴擄紝騫舵煡璇uaopen_hello_world鎺ュ彛
       f.寰楀埌l(fā)oder鍚庯紝鐢╩odname浣滀負(fù)鍞竴鐨勫弬鏁拌皟鐢ㄨloader鍑芥暟銆傚綋鐒跺弬鏁版槸閫氳繃lua鐨勬爤浼犻掔殑錛屾墍浠oader鐨勫師鍨嬪繀欏葷鍚坙ua鐨勮鑼?int LUA_FUNC(lua_State *L)
         
       ll_require浼?xì)灏啒q欎釜loader鐨勮繑鍥炲肩緇檖ackage.loaded[modelname],濡傛灉loader涓嶈繑鍥炲煎悓鏃?package.loaded[modelname]涓嶅瓨鍦ㄦ椂, ll_require灝變細(xì)鎶妏ackage.loaded[modelname]璁句負(fù)true銆傛渶鍚巐l_reuqire鎶妏ackage.loaded [modelname]榪斿洖緇欒皟鐢ㄨ呫?br />    

3.module鐨勫鐞嗘祦紼?br />    module(name, cb1, cb2, ...)
    
    a.濡傛灉package.loaded[name]鏄竴涓猼able錛岄偅涔堝氨鎶婅繖涓猼able浣滀負(fù)涓涓猰od
    b.濡傛灉鍏ㄥ眬鍙橀噺name鏄竴涓猼able錛屽氨鎶婅繖涓叏灞鍙橀噺浣滀負(fù)涓涓猰od
    c.鍒涘緩table:t = {[name]=package.loaded[name], ["_NAME"]=name, ["_M"]=t, ["_PACKAGE"]=*name*(鍒犻櫎浜?jiǎn)鏈鍚庣殑".XXXX"閮ㄥ垎)}. 濡傛灉name鏄竴涓互鐐瑰垎鍓茬殑涓詫紝閭d箞寰楀埌鐨刴od綾諱技榪欎釜鏍峰瓙錛?br />      hello.world==> {["hello"]={["world"]={XXXXXXX}}}
    d.渚濇璋冪敤cbs錛?br />      cb1(mod), cb2(mod),...
      
    e.灝嗗綋鍓嶆ā鍧楃殑鐜璁劇疆涓簃od,鍚屾椂鎶妏ackage.loaded[name] = mod    
    

  娓呮浜?jiǎn)lua鍏充簬妯″潡鐨勫鐞嗭紝灝辨瘮杈冨鏄撶悊瑙e啓lua鎵╁睍鐨勭粏鑺備簡(jiǎn)^_^銆?


]]>lua瀛︿範(fàn)http://m.shnenglu.com/colorful/archive/2014/08/08/207945.html澶氬僵浜虹敓澶氬僵浜虹敓Fri, 08 Aug 2014 09:01:00 GMThttp://m.shnenglu.com/colorful/archive/2014/08/08/207945.htmlhttp://m.shnenglu.com/colorful/comments/207945.htmlhttp://m.shnenglu.com/colorful/archive/2014/08/08/207945.html#Feedback0http://m.shnenglu.com/colorful/comments/commentRss/207945.htmlhttp://m.shnenglu.com/colorful/services/trackbacks/207945.html

----------------------------------------------------------------------------------

澶存枃浠秎ua.h瀹氫箟浜?jiǎn)Lua鎻愪緵鐨勫熀紜鍑芥暟銆傚叾涓寘鎷垱寤轟竴涓柊鐨凩ua鐜鐨勫嚱鏁幫紙濡俵ua_open錛夛紝璋冪敤 Lua鍑芥暟錛堝lua_pcall錛夌殑鍑芥暟錛岃鍙?鍐欏叆Lua鐜鐨勫叏灞鍙橀噺鐨勫嚱鏁幫紝娉ㄥ唽鍙互琚獿ua浠g爜璋冪敤鐨勬柊鍑芥暟鐨勫嚱鏁幫紝絳夌瓑銆傛墍鏈夊湪lua.h涓?琚畾涔夌殑閮芥湁涓涓猯ua_鍓嶇紑銆?/p>

澶存枃浠秎auxlib.h瀹氫箟浜?jiǎn)杈呭姪搴撳Q坅uxlib錛夋彁渚涚殑鍑芥暟銆傚悓鏍鳳紝鎵鏈夊湪鍏朵腑瀹氫箟鐨勫嚱鏁扮瓑閮戒互luaL_鎵撳ご錛堜緥濡傦紝luaL_loadbuffer錛夈傝緟鍔╁簱鍒╃敤lua.h涓彁渚涚殑鍩虹鍑芥暟鎻愪緵浜?jiǎn)鏇撮珮灞倠啤涓婄殑鎶借薄锛涙墍鏈塋ua鏍囧噯搴撻兘浣跨敤浜?jiǎn)auxlib銆?/p>


----------------------------------------------------------------------------------

鍦ㄦ帶鍒跺彴 浣跨敤 require 鑰佹槸澶辮觸

鍚庢潵鍙戠幇瑕佷慨鏀逛竴涓?package.path

require鎼滅儲(chǔ)妯″潡鏃舵槸鏍規(guī)嵁package.path璁劇殑璺緞鏉ユ悳绱㈢殑


require鎼滅儲(chǔ)璺緞

package.path   -- lua妯″潡璺緞

package.cpath    -- dll so 搴撹礬寰?br />


package.path = package.path..';d:\?.lua'


// require mylua.lua

require 'mylua' 


------------------------------------------------------------------------------------



]]>lua5.1.5 瀹夎http://m.shnenglu.com/colorful/archive/2013/07/16/201868.html澶氬僵浜虹敓澶氬僵浜虹敓Tue, 16 Jul 2013 08:54:00 GMThttp://m.shnenglu.com/colorful/archive/2013/07/16/201868.htmlhttp://m.shnenglu.com/colorful/comments/201868.htmlhttp://m.shnenglu.com/colorful/archive/2013/07/16/201868.html#Feedback0http://m.shnenglu.com/colorful/comments/commentRss/201868.htmlhttp://m.shnenglu.com/colorful/services/trackbacks/201868.htmllua5.1.5 瀹夎

lua榛樿緙栬瘧鍑虹殑鏄潤(rùn)鎬佸簱, 瑕佺敓鎴愬姩鎬佸簱闇浣滃涓嬩慨鏀?
1: src/Makefile
   濡傛灉鏄?4浣嶇郴緇? 鍦–FLAGS鍚庡姞 -fPIC 鍙傛暟
   鍦?8琛屽乏鍙沖姞 LUA_SO= liblua.so
   ALL_T鍚庡姞 $(LUA_SO)
   60琛屽乏鍙沖姞鐢熸垚瑙勫垯:
   $(LUA_SO): $(CORE_O) $(LIB_O)
             $(CC) -o $@ -shared $? -ldl -lm
2: lua鏍圭洰褰曚笅鐨?Makefile
   淇敼TO_LIB 涓?TO_LIB= liblua.a liblua.so

淇敼瀹屽悗寮濮嬪畨瑁?br />make linux
make install

榪欐牱鍦╨ua鏍圭洰褰曚笅浼?xì)鐢熸垚liblua.so, 灝唋iblua.so copy鍒?usr/local/lib涓?br />cp liblua.so /usr/local/lib

榪欐牱灝卞彲浠ヤ簡(jiǎn)


]]>lua fPIC errorhttp://m.shnenglu.com/colorful/archive/2013/04/23/199659.html澶氬僵浜虹敓澶氬僵浜虹敓Tue, 23 Apr 2013 06:50:00 GMThttp://m.shnenglu.com/colorful/archive/2013/04/23/199659.htmlhttp://m.shnenglu.com/colorful/comments/199659.htmlhttp://m.shnenglu.com/colorful/archive/2013/04/23/199659.html#Feedback0http://m.shnenglu.com/colorful/comments/commentRss/199659.htmlhttp://m.shnenglu.com/colorful/services/trackbacks/199659.html

瀹夎lua錛?/p>

tar zxvf lua-5.1.4.tar.gz

cd lua-5.1.4

濡傛灉浣犵殑鏈嶅姟鍣ㄦ槸64浣嶇殑錛岃繖鏃惰璋冩暣涓涓婱akefile錛歷i src/Makefile錛屽湪CFLAGS閲屽姞涓?fPIC錛屽惁鍒欎細(xì)鍑洪敊錛?/p>

/usr/bin/ld: /usr/local/lib/liblua.a(lapi.o):

relocation R_X86_64_32 against `luaO_nilobject_' can not be used when making a shared object;

recompile with -fPIC

/usr/local/lib/liblua.a: could not read symbols: Bad value

鎺ヤ笅鏉ヤ笉鐢ㄦ墽琛屽父瑙佺殑configure錛岀洿鎺ake錛?/p>

make linux

make install



]]>luabind甯哥敤鏂規(guī)硶鎬葷粨 http://m.shnenglu.com/colorful/archive/2012/10/18/193495.html澶氬僵浜虹敓澶氬僵浜虹敓Thu, 18 Oct 2012 15:45:00 GMThttp://m.shnenglu.com/colorful/archive/2012/10/18/193495.htmlhttp://m.shnenglu.com/colorful/comments/193495.htmlhttp://m.shnenglu.com/colorful/archive/2012/10/18/193495.html#Feedback0http://m.shnenglu.com/colorful/comments/commentRss/193495.htmlhttp://m.shnenglu.com/colorful/services/trackbacks/193495.htmlluabind姣旇緝澶嶆潅錛屽姛鑳藉寘緗椾竾璞★紝浣嗕嬌鐢ㄨ搗鏉ユ瘮杈冪畝鍗曪紝鐗瑰埆鏄渶甯哥敤鐨勬柟娉曞彧鏈夊嚑涓紝涓嬮潰緇撳悎涓涓畝鍗曠殑渚嬪瓙鎬葷粨涓涓嬨?    鍦ㄦ垜浠父鎴忓簲鐢ㄤ腑錛屼竴鑸兘鏄凡c++涓轟富瀵肩殑錛屼篃灝辨槸璇碿++涓誨姩璋冪敤lua鑴氭湰銆?br />
鍏堝啓涓涓瘮杈冨父瑙佺殑lua鑴氭湰錛?/div>
  1. nGlobal = 10 --涓涓叏灞鐨勬暣褰㈠彉閲?nbsp;  
  2. strGlobal = "hello i am in lua" --涓涓叏灞鐨勫瓧絎︿覆鍙橀噺   
  3. --涓涓繑鍥炲間負(fù)int綾誨瀷鐨勫嚱鏁?nbsp;  
  4. function add(a, b)   
  5.     return a+b   
  6. end   
  7. --涓涓繑鍥炲間負(fù)string綾誨瀷鐨勫嚱鏁?nbsp;  
  8. function strEcho(a)   
  9.     print(a) 10   
  10.     return 'haha i have print your input param'   
  11. end   
  12. cppapi.testFunc() --璋冪敤c++鏆撮湶鐨勪竴涓祴璇曞嚱鏁?nbsp;  
  13. t={name='ettan', age=23, desc='姝e艱姳瀛e勾榫?}  
 
////////////////////////////////////lua鑴氭湰緇撴潫
涓嬮潰鍐檆++鍑芥暟涓殑璋冪敤浜?/div>
  1. #include<iostream>  
  2. #include<string>  
  3. using namespace std;  
  4. #include<lua.hpp>  
  5. #include<luabind/function.hpp>  
  6. void testFunc()  
  7. {  
  8.     cout<<"helo there, i am a cpp fun"<<endl;  
  9. }  
  10. int main(int argc, char* argv[])  
  11. {  
  12.     //棣栧厛澹版槑luaState鐜  
  13.     using namespace luabind;  
  14.     lua_State* L = lua_open();  //涔熷彲浠ョ敤luaL_newState()鍑芥暟  
  15.     luaL_openlibs(L);   //娉ㄦ剰灝唋ua榛樿搴撴墦寮錛岃涓嶄細(xì)鍑虹幇N澶氶敊璇殑錛屾瘮濡俻rint鍑芥暟閮芥病鏈?nbsp; 
  16.     //灝哻++涓殑鍑芥暟鏆撮湶緇檒ua  
  17.     module(L, "cppapi")  
  18.     [  
  19.         def("testFunc", (void(*)(void))testFunc)  
  20.     ];  
  21.     //鍔犺澆lua鑴氭湰錛屾垜浠復(fù)鏃惰搗鍚峵est.lua  
  22.     luaL_dofile(L, "test.lua");  
  23.     try  
  24.     {  
  25.         //璋冪敤lua涓殑鏁村艦鍏ㄥ眬鍙橀噺  
  26.         int nLuaGlobal =     luabind::object_cast<int>(luabind::globals(L)["nGlobal"]) ;  
  27.         //璋冪敤lua涓殑瀛楃涓插彉閲?nbsp; 
  28.         string strLuaGlobal = luabind::object_cast<string>(luabind::globals(L)["strGlobal"]);  
  29.         //鑾峰彇table,鏂規(guī)硶涓錛岄氳繃luabind::object 鍥烘湁鏂規(guī)硶  
  30. luabind::object luaTable = luabind::globals(L)["t"] ;  
  31. string name=luabind::object_cast<string>(luaTable["name"]) ;  
  32.         int age = luabind::object_cast<int>(luaTable["age"]) ;  
  33.         //鑾峰彇table錛屾柟娉曚簩錛岄氳繃gettable  
  34.         string desc = luabind::object_cast<string>(luabind::gettable(luaTable,"desc"));  
  35.         //涓嬮潰鏄皟鐢╨ua涓嚱鏁?nbsp; 
  36.         int nAddRes = luabind::call_function<int>(L, "add", 3, 4) ;  
  37.         string strEchoRes = luabind::call_function<string>(L, "strEcho", "c++鍙傛暟") ;  
  38.     }  
  39.     catch(...)  
  40.     {  
  41.         cout<<"error"<<endl;  
  42.     }  
  43.     return 0;  
  44. }  
 
    鎴戜滑鐩墠甯哥敤鐨勬柟娉曟殏鏃跺氨鏈夎繖浜涳紝褰撶劧鍦ㄥ疄闄呯紪鐮佷腑錛宑++鏆撮湶緇檒ua鐨勭粡甯告槸c++綾諱腑鐨勫嚱鏁幫紝鍙紼嶅姞淇敼灝辮錛?/div>


]]>linux 涓嬪畨瑁卨uabindhttp://m.shnenglu.com/colorful/archive/2012/09/25/191985.html澶氬僵浜虹敓澶氬僵浜虹敓Tue, 25 Sep 2012 12:11:00 GMThttp://m.shnenglu.com/colorful/archive/2012/09/25/191985.htmlhttp://m.shnenglu.com/colorful/comments/191985.htmlhttp://m.shnenglu.com/colorful/archive/2012/09/25/191985.html#Feedback0http://m.shnenglu.com/colorful/comments/commentRss/191985.htmlhttp://m.shnenglu.com/colorful/services/trackbacks/191985.html  luabind闇瑕乥oost 鍜宭ua, 璇峰厛瀹夎boost, lua
  luabind鐢ㄥ埌l(fā)ua鐨勫姩鎬佸簱錛岃鍦ㄥ畨瑁卨ua鏃剁紪璇戝嚭 liblua.so

  a: export BOOST_ROOT=/home/zc/tools/boost_1_48_0
  b: export LUA_PATH=/usr/local/
  c: bjam stage --toolset=gcc --with-date_time --with-fpic --with-filesystem link=static debug release  --榪欎竴姝ュ彲浠ヤ笉瑕?br />   d: bjam install


]]>鍏充簬lua5.1.4鎵句笉鍒發(fā)uaL_openlibs鐨勯棶棰?/title><link>http://m.shnenglu.com/colorful/archive/2012/09/25/191982.html</link><dc:creator>澶氬僵浜虹敓</dc:creator><author>澶氬僵浜虹敓</author><pubDate>Tue, 25 Sep 2012 11:53:00 GMT</pubDate><guid>http://m.shnenglu.com/colorful/archive/2012/09/25/191982.html</guid><wfw:comment>http://m.shnenglu.com/colorful/comments/191982.html</wfw:comment><comments>http://m.shnenglu.com/colorful/archive/2012/09/25/191982.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/colorful/comments/commentRss/191982.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/colorful/services/trackbacks/191982.html</trackback:ping><description><![CDATA[蹇欎簡(jiǎn)涓涓嬪崍錛屾渶鍚庢墠鍙戠幇鏄痵rc/Makefile閲屽皯鏁版嵁<br /><div><div>LUAC_T=    luac<br />LUAC_O=    luac.o print.o<br />LUA_SO= liblua.so<br /><br />ALL_O= $(CORE_O) $(LIB_O) $(LUA_O) $(LUAC_O)<br />ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T) $(LUA_SO)<br />ALL_A= $(LUA_A)<br /><br />default: $(PLAT)<br /><br />all:    $(ALL_T)<br /><br />o:    $(ALL_O)<br /><br />a:    $(ALL_A)<br /><br />$(LUA_A): $(CORE_O) $(LIB_O)<br />    $(AR) $@ $?<br />    $(RANLIB) $@<br /><br />$(LUA_T): $(LUA_O) $(LUA_A)<br />    $(CC) -o $@ $(MYLDFLAGS) $(LUA_O) $(LUA_A) $(LIBS)<br /><br />$(LUAC_T): $(LUAC_O) $(LUA_A)<br />    $(CC) -o $@ $(MYLDFLAGS) $(LUAC_O) $(LUA_A) $(LIBS)<br /><br />$(LUA_SO):$(CORE_O) $(LIB_O)<br />    $(CC) -o $@ -shared -fPIC $? -ldl -lm<br /></div></div><img src ="http://m.shnenglu.com/colorful/aggbug/191982.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/colorful/" target="_blank">澶氬僵浜虹敓</a> 2012-09-25 19:53 <a href="http://m.shnenglu.com/colorful/archive/2012/09/25/191982.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>lua 瀹夎http://m.shnenglu.com/colorful/archive/2012/09/25/191949.html澶氬僵浜虹敓澶氬僵浜虹敓Tue, 25 Sep 2012 06:23:00 GMThttp://m.shnenglu.com/colorful/archive/2012/09/25/191949.htmlhttp://m.shnenglu.com/colorful/comments/191949.htmlhttp://m.shnenglu.com/colorful/archive/2012/09/25/191949.html#Feedback0http://m.shnenglu.com/colorful/comments/commentRss/191949.htmlhttp://m.shnenglu.com/colorful/services/trackbacks/191949.html涓嬭澆婧愭枃浠?br />tar zxvf lua.tar.gz
make linux
make install

鎻愮ず鎵句笉鍒皉eadline/readline.h
apt-get install libncurses5-dev libreadline5-dev


]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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在线| 久久久久久久高潮| 久久国产精品一区二区三区| 亚洲国产精品久久| 亚洲欧洲一区二区三区久久| 亚洲精品三级| 亚洲午夜av在线| 午夜天堂精品久久久久| 久久精品欧美| 久久婷婷国产综合尤物精品| 男人的天堂亚洲| 免费人成网站在线观看欧美高清| 久久躁狠狠躁夜夜爽| 欧美色精品天天在线观看视频 | 亚洲电影第三页| 久久露脸国产精品| 欧美黄色大片网站| 亚洲天堂网在线观看| 先锋a资源在线看亚洲| 麻豆av福利av久久av| 欧美日韩一区二区三区四区在线观看 | 国产乱码精品一区二区三| 国产无遮挡一区二区三区毛片日本| 亚洲国产精品一区二区久| 亚洲永久在线| 欧美韩日一区二区| 欧美一区二区三区在| 欧美日本在线视频| 亚洲国产欧美一区| 午夜精品视频网站| 免费观看久久久4p| 日韩亚洲欧美精品| 欧美成人激情视频| 一区一区视频| 久久国产88| 中文日韩欧美| 欧美精选一区| 亚洲第一中文字幕| 久久久99国产精品免费| 在线视频欧美日韩| 欧美日韩国产三级| 亚洲精品三级| 最新亚洲视频| 欧美成人一品| 亚洲国产精品一区二区第一页| 久久久久99| 午夜精品999| 国产亚洲精品成人av久久ww| 亚洲欧美一区二区三区极速播放| 亚洲精品四区| 欧美日韩国产123| 一区二区精品| 日韩一区二区免费看| 欧美日韩国产黄| 一区二区三区四区蜜桃| 亚洲日本一区二区| 欧美精品播放| 一区二区三区**美女毛片| 亚洲精品少妇网址| 欧美色中文字幕| 亚洲欧美日韩国产综合| 亚洲午夜高清视频| 国产精品综合久久久| 欧美夜福利tv在线| 欧美亚洲不卡| 99视频精品全国免费| 欧美激情中文字幕在线| 欧美大片在线观看一区二区| 日韩视频一区二区| 日韩亚洲欧美高清| 国产日韩欧美三区| 欧美成人69av| 欧美日韩国产一区二区三区| 亚洲一区二区在线| 午夜一区不卡| 亚洲黄色大片| 一本色道久久综合一区| 国产一区二区精品| 亚洲第一网站| 欧美人与禽猛交乱配| 午夜精品福利一区二区三区av | 免费久久精品视频| 欧美激情女人20p| 亚洲精品一区二区三区不| 亚洲精品免费电影| 欧美系列精品| 欧美亚洲专区| 欧美大片在线观看一区二区| 亚洲专区在线视频| 久久久久国内| 亚洲美女视频网| 一本色道久久综合狠狠躁的推荐| 国产精品一区免费在线观看| 亚洲第一搞黄网站| 国产色产综合产在线视频| 欧美激情欧美激情在线五月| 国产精品久久亚洲7777| 欧美成人dvd在线视频| 欧美三区免费完整视频在线观看| 久久久久久久一区二区| 欧美日韩亚洲一区二区| 久久综合色影院| 国产精品久久一区二区三区| 欧美成人综合| 国内精品久久久| 一区二区三区欧美亚洲| 亚洲日本中文| 久久精品一级爱片| 性做久久久久久久免费看| 欧美精品国产| 欧美激情一区二区三区不卡| 国内精品久久久久久久影视蜜臀 | 久久动漫亚洲| 国产精品99久久久久久久久| 久久偷窥视频| 欧美在线三区| 欧美色图麻豆| 91久久久亚洲精品| 禁断一区二区三区在线| 亚洲专区欧美专区| 亚洲午夜精品久久| 久久久人成影片一区二区三区观看| 亚洲九九九在线观看| 免费不卡视频| 亚洲日本aⅴ片在线观看香蕉| 久久亚洲视频| 国产精品女同互慰在线看| 久久久午夜视频| 国产一区在线看| 久久久www成人免费无遮挡大片| 亚洲尤物影院| 欧美涩涩视频| 一本久道久久久| 亚洲性感激情| 欧美国产综合| 亚洲国产精品一区在线观看不卡| 国产综合色产| 欧美伊人久久| 久久精品国产96久久久香蕉| 国产农村妇女毛片精品久久麻豆| 亚洲国产成人精品女人久久久| 极品少妇一区二区三区| 另类图片国产| 欧美黑人在线观看| 一本色道久久99精品综合| 蜜月aⅴ免费一区二区三区| 欧美激情精品久久久久久免费印度| 1204国产成人精品视频| 女仆av观看一区| 一本色道久久综合精品竹菊| 亚洲一区二区在线免费观看视频| 国产精品久久久久9999吃药| 亚洲欧美日韩电影| 久热综合在线亚洲精品| 亚洲人成艺术| 国产精品成人在线| 久久精品亚洲一区二区三区浴池| 欧美国产日韩视频| 亚洲免费在线视频| 精品成人在线视频| 欧美日韩1234| 久久av一区| 亚洲国产影院| 欧美影院视频| 亚洲精品一区二区在线观看| 欧美视频一区二区三区…| 欧美亚洲尤物久久| 91久久精品日日躁夜夜躁国产| 欧美在线视频一区二区| 亚洲啪啪91| 国产一区二区精品| 欧美色图麻豆| 美女久久一区| 香蕉久久夜色| 亚洲免费激情| 毛片一区二区| 欧美一级在线视频| 亚洲麻豆国产自偷在线| 国产一区视频在线观看免费| 欧美日韩卡一卡二| 蜜臀a∨国产成人精品| 校园激情久久| 一区二区av在线| 欧美激情亚洲激情| 久久久在线视频| 欧美一区二区在线观看| av成人激情| 亚洲国产精品毛片| 国产日产欧产精品推荐色 | 欧美日一区二区在线观看| 久久精品久久99精品久久| 99在线热播精品免费| 快she精品国产999| 亚洲国产精品成人久久综合一区| 欧美专区在线| 午夜精品久久久久久久久久久| 亚洲精品九九| 亚洲第一中文字幕|