锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 鐩墠鎴戝叕鍙稿紑鍙戠殑Nexus Engine鐨勫簳灞傚璞″簭鍒楀寲浣跨敤浜員inyXML鏉ヨ鍐橷ML鏂囦歡銆俆inyXML鏈変袱涓笉鐖界殑鍦版柟錛屼竴鏄畠鐨勬帴鍙d嬌鐢‵ILE*錛屽彟澶栦竴涓槸瀹冨 wchar_t涓嶈兘寰堝ソ鐨勬敮鎸併傚墠闃靛瓙鐪婤oost搴撶殑鏇存柊涓浜嗕竴涓狿ropertyTree錛屼粬鍦ㄥ鐞哫ML鏃剁敤鍒頒簡鍙﹀涓涓皬鐨勫簱 –RapidXML銆傛棦鐒墮棿鎺ョ殑鏄疊oost搴撶殑涓閮ㄥ垎錛屾墍浠ユ槸鍊煎緱涓璇曠殑銆備簬鏄壘鍒板叾瀹樻柟緗戠珯錛?a title=http://rapidxml.sourceforge.net/ target=_blank>http://rapidxml.sourceforge.net/錛夌爺絀朵簡涓鐣備竴鐪嬩箣涓嬶紝鐢氭槸婊℃剰錛屼篃鎺ㄨ崘緇欏ぇ瀹剁湅鐪嬶紒 棣栧厛灝辨槸閫熷害錛屾嵁瀹冭嚜宸卞縐版瘮TinyXML蹇?0鍒?0鍊嶏紝姣擷erces DOM蹇?0鍒?00鍊嶏紒璇︾粏鐨勬祴璇曟瘮杈冭瑙佸叾鐢ㄦ埛鎵嬪唽錛?a title=http://rapidxml.sourceforge.net/manual.html target=_blank>http://rapidxml.sourceforge.net/manual.html錛夌殑“4. Performance ”涓鑺傘?/p>
鍏舵瀹冪殑璁捐闈炲父鐨勭畝媧侊紝鍙緷璧栦簬鏍囧噯搴撲腑鐨勫嚑涓熀鏈殑綾匯傚畠鐨勮緭鍏ヨ緭鍑洪兘鏄瓧絎︿覆錛岃繖鏍峰緢濂斤紝涓涓簱灝卞簲璇ュ叧娉ㄨ嚜宸辨牳蹇冪殑鍐呭錛屽仛灝介噺灝戠殑浜嬫儏銆傚畠鐨凙PI鍏跺疄鍜孴inyXML鍊掓槸鏈夊嚑鍒嗙浉浼鹼紝鐢ㄨ繃TinyXML鐨勪漢搴旇寰堝鏄撲笂鎵嬶細 TinyXML涓昏鎺ュ彛綾? RapidXML鐨勪富瑕佹帴鍙g被 涓嬮潰榪樻槸鐪嬩竴涓叿浣撶殑渚嬪瓙鏉ヤ綋楠屼竴涓嬶紝涓嬮潰鏄疶inyXML瀹樻柟鏁欑▼涓垱寤篨ML鏂囨。鐨勪竴孌典唬鐮侊細 void build_simple_doc( ) 涓嬮潰鏄嬌鐢≧apidXML瀹炵幇綾諱技鍔熻兘鐨勪唬鐮侊細 void build_simple_doc_by_rapidxml() xml_node<>* node = string text; // write text to file by yourself 涓嬮潰鏄嬌鐢≧apidXML鍒嗘瀽XML鐨勬牱渚嬩唬鐮侊細 void parse_doc_by_rapidxml(char* xml_doc) xml_node<> *node = doc.first_node(“Hello”); 鍓嶄袱澶╂湁鏈嬪弸闂紝鎴戠殑SlimXml鏈夋病鏈夊拰RapidXml瀵規瘮榪囨晥鐜囷紵鎴戞槸絎竴嬈″惉璇磋繖涓簱錛屾洿涓嶇敤璇村姣旀晥鐜囦簡錛屼簬鏄笂浠栦滑緗戠珯鐪嬩簡涓嬨?/p>
濂藉浼欙紝灞呯劧鍙風О姣?a target=_blank>TinyXml蹇?0锝?0鍊嶏紝鑰屼笖鏄?a >Boost.PropertyTree鐨勯粯璁ml瑙f瀽鍣ㄣ?/p>
浜庢槸鏈夌偣濂藉錛屽洜涓轟互鍓嶄篃娌℃湁鐗瑰埆鍏沖績榪嘢limXml鐨勬晥鐜囥?/p>
浜庢槸鍒嗗埆涓嬭澆浜員inyXml-2.6.1鍜孯apidXml-1.13錛岃繀閫熺敤vc8寤虹珛浜嗕袱涓祴璇曞伐紼嬶紝鍦ㄧ郴緇熶腑鎼?#8221;*.xml”錛屾壘鍒頒簡涓涓瘮杈冨悎閫傜殑嫻嬭瘯鏂囦歡銆傚畠瓚沖澶э紙1.5M錛夛紝utf-8緙栫爜騫朵笖鍖呭惈涓?鑻辨枃錛屾湁涓瀹氬眰嬈℃繁搴︼紝澶х害3.3涓囪銆傛祴璇曟枃浠跺彲浠?a target=_blank>浠庤繖閲屼笅杞?/span> 嫻嬭瘯瀵硅薄鏄笁涓簱浠庡唴瀛樺瓧絎︿覆瑙f瀽xml鐨勫嚱鏁幫紝榪欐牱鑳芥帓闄や粠紜洏涓婅鏂囦歡榪欑涓嶇ǔ瀹氬洜绱犵殑騫叉壈錛岃屼笖RapidXml璨屼技鍙敮鎸佷粠鍐呭瓨閲岃В鏋?/p>
瑕佽鏄庣殑鏄紝RapidXml鐨勮繖涓猵arse鏄竴涓ā鏉垮嚱鏁幫紝蹇呴』緇欎竴涓猣lag鐨勫弬鏁幫紝鎴戞祴璇曠殑鏃跺欑粰鐨勬槸榛樿鐨? 嫻嬭瘯緇撴灉錛岃В鏋愯繖涓?.3涓囪錛?.5M澶у皬鐨剎ml錛屼笁涓簱鍒嗗埆鑺變簡 緇撹鏄紝RapidXml鏋滅劧寰堝己鎮嶏紝灞呯劧姣旀垜鐨凷limXml蹇?鍊嶅銆備絾鏄茍娌℃湁濡備綔鑰呮墍璇存瘮TinyXml蹇?0~60鍊嶏紝鍙湁涓嶅埌15鍊嶃傛嵁璇村姣旂敤鐨勬槸涓涓害50k澶у皬鐨剎ml鏂囦歡錛屽彲鎯滃茍娌℃湁鎻愪緵涓嬭澆錛屼笉鐒跺彲浠ラ獙璇佷竴涓嬨?/p>
姣旇緝嬈f叞鐨勬槸錛屽湪鎴戝茍娌℃湁寰堝叧娉ㄦ晥鐜囩殑鎯呭喌涓嬶紝SlimXml浠嶇劧姣擳inyXml蹇?.5鍊嶃係limXml璧扮殑鏄畝鍗曞皬宸ц礬綰匡紝婧愪唬鐮佸彧鏈?2k錛岃孴inyXml鍜孯apidXml鐨勬簮鐮佸垎鍒槸147k鍜?41k錛屾湁榪欐牱鐨勬晥鐜囧彲浠ユ弧鎰忎簡銆傚湪鎴戞湁寰堝絀洪棽浠ュ墠錛屼及璁℃垜涔熶笉浼氬啀鍘諱紭鍖栧畠錛屽洜涓鴻繖涓簱涓昏榪樻槸閽堝鍑犲崄涓婄櫨琛岀殑灝忔枃浠訛紝瑙f瀽鐗瑰埆澶х殑xml涓嶅湪鎴戣冭檻鐨勮寖鍥翠箣鍐呫?/p>
浠ヤ笅鏄疪apidXml鎻愪緵鐨勫父瑙亁ml搴撴晥鐜囧鐓ц〃錛屽叾涓繕寰堢墰榧誨湴鎻愪緵浜嗗拰strlen()鍑芥暟鐨勬晥鐜囧姣?/p>
鎴戜及璁apidXml閫熷害蹇殑涓昏鍘熷洜鏄memory pool鐨勪嬌鐢紝姣曠珶鍦ㄨВ鏋愯繃紼嬩腑闇瑕佸垱寤哄ぇ閲忕殑string錛屽彲浠ユ兂璞$敤memory pool鍜岀洿鎺ヨ蛋榛樿鐨刵ew寰堝鏄撲駭鐢熻秴榪囦竴涓暟閲忕駭鐨勬晥鐜囧樊寮傘?/p>
鑷粠鐢ㄤ簡xml鍚庡浠栨槸鍙堢埍鍙堟仺,浠栫殑紜兘浠f浛閰嶇疆鏂囦歡,浣嗘槸褰撴枃浠跺閲忓ぇ鍒頒竴瀹氶噺鐨勬椂鍊欑伨闅懼氨闄嶄復浜?姣斿璇誨彇涓涓?0M鐨剎ml鏂囦歡,寰寰璇誨彇鑺變笂10縐?瑙f瀽鍐嶈姳涓?0縐?榪樿鍗犵敤澶ч噺鍐呭瓨絀洪棿,鍗佸垎澶寸棝.鎵浠ュ疄闄呴」鐩腑閮戒細灝唜ml鍐嶈漿涓轟簩榪涘埗鏂囦歡鏉ュ鐞?浣嗘槸xml鐨勭伒媧繪х殑紜緢鏂逛究,濡傛灉rapidxml鑳芥帴榪戜簩榪涘埗鐨勯熷害,褰撶劧灝卞お濂藉暒,榪樻病鏈夋祴璇曡繃,涓嬮潰鏄竴浜涗粙緇?
璨屼技tinyxml浼氶亣鍒皍nicode闅滅,rapidxml涓嶄細,濡傛灉欏圭洰瑕佸仛澶氳璦鐗堟湰灝卞繀欏婚潰涓磋В鍐寵繖涓棶棰?..
rapidxml鏄竴涓揩閫熺殑xml搴擄紝瀹樻柟緗戠珯錛?http://rapidxml.sourceforge.net/錛屾牴鎹甿anual鐪嬪埌錛屼粬绔熺劧姣攖inyxml蹇簡50-100鍊?br>
TinyXML涓昏鎺ュ彛綾?/strong>
RapidXML鐨勪富瑕佹帴鍙g被
class TiXmlDocument
template<class Ch = char>
class xml_document
class TiXmlNode
template<class Ch = char>
class xml_node
class TiXmlAttribute
template<class Ch = char>
class xml_attribute
{
// Make xml: <?xml ..><Hello>World</Hello>
TiXmlDocument doc;
TiXmlDeclaration * decl = new TiXmlDeclaration( “1.0″, “”, “” );
TiXmlElement * element = new TiXmlElement( “Hello” );
TiXmlText * text = new TiXmlText( “World” );
element->LinkEndChild( text );
doc.LinkEndChild( decl );
doc.LinkEndChild( element );
doc.SaveFile( “madeByHand.xml” );
}
{
xml_document<> doc;
xml_node<>* decl = doc.allocate_node(node_declaration);
xml_attribute<>* decl_ver =
doc.allocate_attribute(“version”, “1.0″);
decl->append_attribute(decl_ver);
doc.append_node(decl);
doc.allocate_node(node_element, “Hello”, “World”);
doc.append_node(node);
rapidxml::print(std::back_inserter(text), doc, 0);
}
{
xml_document<> doc; // character type defaults to char
doc.parse<0>(xml_doc); // 0 means default parse flags
string node_val = node->value();
}
]]>
]]>
Lua鑴氭湰璇硶璇存槑錛堝鍔爈ua5.1閮ㄤ喚鐗規э級
銆銆Lua 鐨勮娉曟瘮杈冪畝鍗曪紝瀛︿範璧鋒潵涔熸瘮杈冪渷鍔涳紝浣嗗姛鑳藉嵈騫朵笉寮便?br>銆銆鎵浠ワ紝鎴戝彧綆鍗曠殑褰掔撼涓涓婰ua鐨勪竴浜涜娉曡鍒欙紝浣跨敤璧鋒潵鏂逛究濂芥煡灝卞彲浠ヤ簡銆備及璁$湅瀹屼簡錛屽氨鎳傚緱鎬庝箞鍐橪ua紼嬪簭浜嗐?br>
銆銆鍦↙ua涓紝涓鍒囬兘鏄彉閲忥紝闄や簡鍏抽敭瀛椼?br>
I. 棣栧厛鏄敞閲?br>銆銆鍐欎竴涓▼搴忥紝鎬繪槸灝戜笉浜嗘敞閲婄殑銆?br>銆銆鍦↙ua涓紝浣犲彲浠ヤ嬌鐢ㄥ崟琛屾敞閲婂拰澶氳娉ㄩ噴銆?br>銆銆鍗曡娉ㄩ噴涓紝榪炵畫涓や釜鍑忓彿"--"琛ㄧず娉ㄩ噴鐨勫紑濮嬶紝涓鐩村歡緇埌琛屾湯涓烘銆傜浉褰撲簬C++璇█涓殑"http://"銆?br>銆銆澶氳娉ㄩ噴涓紝鐢?--[["琛ㄧず娉ㄩ噴寮濮嬶紝騫朵笖涓鐩村歡緇埌"]]"涓烘銆傝繖縐嶆敞閲婄浉褰撲簬C璇█涓殑"/*...*/"銆傚湪娉ㄩ噴褰撲腑錛?[["鍜?]]"鏄彲浠ュ祵濂楃殑錛?span style="COLOR: red">鍦╨ua5.1涓紝涓嫭鍙蜂腑闂存槸鍙互鍔犺嫢騫蹭釜"="鍙風殑錛屽 [==[ ... ]==]錛夛紝瑙佷笅闈㈢殑瀛楃涓茶〃紺鴻鏄庛?br>
II. Lua緙栫▼
銆銆緇忓吀鐨?Hello world"鐨勭▼搴忔繪槸琚敤鏉ュ紑濮嬩粙緇嶄竴縐嶈璦銆傚湪Lua涓紝鍐欎竴涓繖鏍風殑紼嬪簭寰堢畝鍗曪細
銆銆print("Hello world")
銆銆鍦↙ua涓紝璇彞涔嬮棿鍙互鐢ㄥ垎鍙?錛?闅斿紑錛屼篃鍙互鐢ㄧ┖鐧介殧寮銆備竴鑸潵璇達紝濡傛灉澶氫釜璇彞鍐欏湪鍚屼竴琛岀殑璇濓紝寤鴻鎬繪槸鐢ㄥ垎鍙烽殧寮銆?br>銆銆Lua 鏈夊ソ鍑犵紼嬪簭鎺у埗璇彞錛屽錛?br>
鎺у埗璇彞
鏍煎紡
紺轟緥
If
if 鏉′歡 then ... elseif 鏉′歡 then ... else ... end
elseif 1+2~=3 then print("true")
else print("false") end
While
while 鏉′歡 do ... end
Repeat
repeat ... until 鏉′歡
For
for 鍙橀噺=鍒濆? 緇堢偣鍊? 姝ヨ繘 do ... end
For
for 鍙橀噺1, 鍙橀噺2, ... 鍙橀噺n in 琛ㄦ垨鏋氫婦鍑芥暟 do ... end
銆銆娉ㄦ剰涓涓嬶紝for鐨勫驚鐜彉閲忔繪槸鍙綔鐢ㄤ簬for鐨勫眬閮ㄥ彉閲忥紱褰撶渷鐣ユ榪涘兼椂錛宖or寰幆浼氫嬌鐢?浣滀負姝ヨ繘鍊箋?br>銆銆浣跨敤break鍙互鐢ㄦ潵涓涓涓驚鐜?br>銆銆鐩稿C璇█鏉ヨ錛孡ua鏈夊嚑涓湴鏂規槸鏄庢樉涓嶅悓鐨勶紝鎵浠ラ潰瑕佺壒鍒敞鎰忎竴涓嬶細
銆銆錛?strong>璇彞鍧?/strong>
銆銆銆銆璇彞鍧楀湪C涓槸鐢?{"鍜?}"鎷搗鏉ョ殑錛屽湪Lua涓紝瀹冩槸鐢╠o 鍜?end 鎷搗鏉ョ殑銆傛瘮濡傦細
銆銆銆銆do print("Hello") end
銆銆銆銆鍙互鍦?鍑芥暟 涓拰 璇彞鍧?/strong> 涓畾灞閮ㄥ彉閲忋?br>
銆銆錛?strong>璧嬪艱鍙?/strong>
銆銆銆銆璧嬪艱鍙ュ湪Lua琚己鍖栦簡銆傚畠鍙互鍚屾椂緇欏涓彉閲忚祴鍊箋?br>銆銆銆銆渚嬪錛?br>銆銆銆銆a,b,c,d=1,2,3,4
銆銆銆銆鐢氳嚦鏄細
銆銆銆銆a,b=b,a -- 澶氫箞鏂逛究鐨勪氦鎹㈠彉閲忓姛鑳藉晩銆?br>銆銆銆銆鍦ㄩ粯璁ゆ儏鍐典笅錛屽彉閲忔繪槸璁や負鏄叏灞鐨勩傚亣濡傞渶瑕佸畾涔夊眬閮ㄥ彉閲忥紝鍒欏湪絎竴嬈¤祴鍊肩殑鏃跺欙紝闇瑕佺敤local璇存槑銆傛瘮濡傦細
銆銆銆銆local a,b,c = 1,2,3 -- a,b,c閮芥槸灞閮ㄥ彉閲?br>
銆銆錛?strong>鏁板艱繍綆?/strong>
銆銆銆銆鍜孋璇█涓鏍鳳紝鏀寔 +, -, *, /銆備絾Lua榪樺浜嗕竴涓?^"銆傝繖琛ㄧず鎸囨暟涔樻柟榪愮畻銆傛瘮濡?^3 緇撴灉涓?, 2^4緇撴灉涓?6銆?br>銆銆銆銆榪炴帴涓や釜瀛楃涓詫紝鍙互鐢?.."榪愬絎︺傚錛?br>銆銆銆銆"This a " .. "string." -- 絳変簬 "this a string"
銆銆錛?strong>姣旇緝榪愮畻
姣旇緝絎﹀彿
<
>
<=
>=
==
~=
鍚箟
灝忎簬
澶т簬
灝忎簬鎴栫瓑浜?/td>
澶т簬鎴栫瓑浜?/td>
鐩哥瓑
涓嶇浉絳?/td>
銆銆銆銆鎵鏈夎繖浜涙搷浣滅鎬繪槸榪斿洖true鎴杅alse銆?br>銆銆銆銆瀵逛簬Table錛孎unction鍜孶serdata綾誨瀷鐨勬暟鎹紝鍙湁 == 鍜?~=鍙互鐢ㄣ傜浉絳夎〃紺轟袱涓彉閲忓紩鐢ㄧ殑鏄悓涓涓暟鎹傛瘮濡傦細
銆銆銆銆a={1,2}
銆銆銆銆b=a
銆銆銆銆print(a==b, a~=b) --杈撳嚭 true, false
銆銆銆銆a={1,2}
銆銆銆銆b={1,2}
銆銆銆銆print(a==b, a~=b) --杈撳嚭 false, true
銆銆錛庨昏緫榪愮畻
銆銆銆銆and, or, not
銆銆銆銆鍏朵腑錛宎nd 鍜?or 涓嶤璇█鍖哄埆鐗瑰埆澶с?br>銆銆銆銆鍦ㄨ繖閲岋紝璇峰厛璁頒綇錛屽湪Lua涓紝鍙湁false鍜宯il鎵嶈綆椾負false錛屽叾瀹冧換浣曟暟鎹兘璁$畻涓簍rue錛?涔熸槸true錛?br>銆銆銆銆and 鍜?or鐨勮繍綆楃粨鏋滀笉鏄痶rue鍜宖alse錛岃屾槸鍜屽畠鐨勪袱涓搷浣滄暟鐩稿叧銆?br>銆銆銆銆a and b錛氬鏋渁涓篺alse錛屽垯榪斿洖a錛涘惁鍒欒繑鍥瀊
銆銆銆銆a or b錛氬鏋?a 涓簍rue錛屽垯榪斿洖a錛涘惁鍒欒繑鍥瀊
銆銆銆銆涓懼嚑涓緥瀛愶細
銆銆銆銆 print(4 and 5) --杈撳嚭 5
銆銆銆銆 print(nil and 13) --杈撳嚭 nil
銆銆銆銆 print(false and 13) --杈撳嚭 false
銆銆銆銆 print(4 or 5) --杈撳嚭 4
銆銆銆銆 print(false or 5) --杈撳嚭 5
銆銆銆銆鍦↙ua涓繖鏄緢鏈夌敤鐨勭壒鎬э紝涔熸槸姣旇緝浠や漢娣鋒揣鐨勭壒鎬с?br>銆銆銆銆鎴戜滑鍙互妯℃嫙C璇█涓殑璇彞錛歺 = a? b : c錛屽湪Lua涓紝鍙互鍐欐垚錛歺 = a and b or c銆?br>銆銆銆銆鏈鏈夌敤鐨勮鍙ユ槸錛?x = x or v錛屽畠鐩稿綋浜庯細if not x then x = v end 銆?br>
銆銆錛庤繍綆楃浼樺厛綰э紝浠庝綆鍒伴珮欏哄簭濡備笅錛?br>
鍜孋璇█涓鏍鳳紝鎷彿鍙互鏀瑰彉浼樺厛綰с?br>
or
and
< > <= >= ~= ==
.. (瀛楃涓茶繛鎺?
+ -
* / %
not #(lua5.1 鍙栭暱搴﹁繍綆?/span>) - (涓鍏冭繍綆?
^
III. 鍏抽敭瀛?br>銆銆鍏抽敭瀛楁槸涓嶈兘鍋氫負鍙橀噺鐨勩侺ua鐨勫叧閿瓧涓嶅錛屽氨浠ヤ笅鍑犱釜錛?br>
and
break
do
else
elseif
end
false
for
function
if
in
local
nil
not
or
repeat
return
then
true
until
while
IV. 鍙橀噺綾誨瀷
銆銆鎬庝箞紜畾涓涓彉閲忔槸浠涔堢被鍨嬬殑鍛紵澶у鍙互鐢╰ype()鍑芥暟鏉ユ鏌ャ侺ua鏀寔鐨勭被鍨嬫湁浠ヤ笅鍑犵錛?br>
Nil
絀哄鹼紝鎵鏈夋病鏈変嬌鐢ㄨ繃鐨勫彉閲忥紝閮芥槸nil銆俷il鏃㈡槸鍊鹼紝鍙堟槸綾誨瀷銆?/td>
Boolean
甯冨皵鍊鹼紝鍙湁涓や釜鏈夋晥鍊鹼細true鍜宖alse
Number
鏁板鹼紝鍦↙ua閲岋紝鏁板肩浉褰撲簬C璇█鐨刣ouble
String
瀛楃涓詫紝濡傛灉浣犳効鎰忕殑璇濓紝瀛楃涓叉槸鍙互鍖呭惈"\0"瀛楃鐨勶紙榪欏拰C璇█鎬繪槸浠?\0"緇撳熬鏄笉涓鏍風殑錛?/td>
Table
鍏崇郴琛ㄧ被鍨嬶紝榪欎釜綾誨瀷鍔熻兘姣旇緝寮哄ぇ錛岃鍙傝冨悗闈㈢殑鍐呭銆?/td>
Function
鍑芥暟綾誨瀷錛屼笉瑕佹鐤戯紝鍑芥暟涔熸槸涓縐嶇被鍨嬶紝涔熷氨鏄錛屾墍鏈夌殑鍑芥暟錛屽畠鏈韓灝辨槸涓涓彉閲忋?/td>
Userdata
鍡紝榪欎釜綾誨瀷涓撻棬鐢ㄦ潵鍜孡ua鐨勫涓繪墦浜ら亾鐨勩傚涓婚氬父鏄敤C鍜孋++鏉ョ紪鍐欑殑錛屽湪榪欑鎯呭喌涓嬶紝Userdata鍙互鏄涓葷殑浠繪剰鏁版嵁綾誨瀷錛屽父鐢ㄧ殑鏈塖truct鍜屾寚閽堛?/td>
Thread
綰跨▼綾誨瀷錛屽湪Lua涓病鏈夌湡姝g殑綰跨▼銆侺ua涓彲浠ュ皢涓涓嚱鏁板垎鎴愬嚑閮ㄤ喚榪愯銆?/span>濡傛灉鎰熷叴瓚g殑璇濓紝鍙互鍘葷湅鐪婰ua鐨勬枃妗c?br>鐜板湪鍥炶繃澶存潵鐪嬬湅錛屽掕寰椾笉鏄嚎紼嬬被鍨嬨傚弽鑰岃薄鏄敤鏉ュ仛閬嶅巻鐨勶紝璞℃槸Iterator鍑芥暟銆?br>濡傦細
local i = 0
while(i < n) do
coroutine.yield( i )
i = i + 1
end
end
V. 鍙橀噺鐨勫畾涔?br>銆銆鎵鏈夌殑璇█錛岄兘瑕佺敤鍒板彉閲忋傚湪Lua涓紝涓嶇鍦ㄤ粈涔堝湴鏂逛嬌鐢ㄥ彉閲忥紝閮戒笉闇瑕佸0鏄庯紝騫朵笖鎵鏈夌殑榪欎簺鍙橀噺鎬繪槸鍏ㄥ眬鍙橀噺錛岄櫎闈炴垜浠湪鍓嶉潰鍔犱笂"local"銆傝繖涓鐐硅鐗瑰埆娉ㄦ剰錛屽洜涓烘垜浠彲鑳芥兂鍦ㄥ嚱鏁伴噷浣跨敤灞閮ㄥ彉閲忥紝鍗村繕浜嗙敤local鏉ヨ鏄庛?br>銆銆鑷充簬鍙橀噺鍚嶅瓧錛屽畠鏄ぇ灝忓啓鐩稿叧鐨勩備篃灝辨槸璇達紝A鍜宎鏄袱涓笉鍚岀殑鍙橀噺銆?br>銆銆瀹氫箟涓涓彉閲忕殑鏂規硶灝辨槸璧嬪箋?錛?鎿嶄綔灝辨槸鐢ㄦ潵璧嬪肩殑
銆銆鎴戜滑涓璧鋒潵瀹氫箟鍑犵甯哥敤綾誨瀷鐨勫彉閲忓惂銆?br>銆銆A. Nil
銆銆銆銆姝e鍓嶉潰鎵璇寸殑錛屾病鏈変嬌鐢ㄨ繃鐨勫彉閲忕殑鍊鹼紝閮芥槸Nil銆傛湁鏃跺欐垜浠篃闇瑕佸皢涓涓彉閲忔竻闄わ紝榪欐椂鍊欙紝鎴戜滑鍙互鐩存帴緇欏彉閲忚祴浠il鍊箋傚錛?br>
銆銆銆銆var1=nil -- 璇鋒敞鎰?nbsp;nil 涓瀹氳灝忓啓
銆銆B. Boolean
銆銆銆銆甯冨皵鍊奸氬父鏄敤鍦ㄨ繘琛屾潯浠跺垽鏂殑鏃跺欍傚竷灝斿兼湁涓ょ錛歵rue 鍜?false銆傚湪Lua涓紝鍙湁false鍜宯il鎵嶈璁$畻涓篺alse錛岃屾墍鏈変換浣曞叾瀹冪被鍨嬬殑鍊鹼紝閮芥槸true銆傛瘮濡?錛岀┖涓茬瓑絳夛紝閮芥槸true銆備笉瑕佽 C璇█鐨勪範鎯墍璇錛?鍦↙ua涓殑鐨勭‘紜槸true銆備綘涔熷彲浠ョ洿鎺ョ粰涓涓彉閲忚祴浠oolean綾誨瀷鐨勫鹼紝濡傦細
銆銆銆銆theBoolean = true
銆銆C. Number
銆銆銆銆鍦↙ua涓紝鏄病鏈夋暣鏁扮被鍨嬬殑錛屼篃涓嶉渶瑕併備竴鑸儏鍐典笅錛屽彧瑕佹暟鍊間笉鏄緢澶э紙姣斿涓嶈秴榪?00,000,000,000,000錛夛紝鏄笉浼氫駭鐢熻垗鍏ヨ宸殑銆傚湪WindowsXP鑳借窇鐨勫綋浠婁富嫻丳C涓婏紝瀹炴暟鐨勮繍綆楀茍涓嶆瘮鏁存暟鎱€?br>銆銆銆銆瀹炴暟鐨勮〃紺烘柟娉曪紝鍚孋璇█綾諱技錛屽錛?br>銆銆銆銆4 0.4 4.57e-3 0.3e12 5e+20
銆銆D. String
銆銆銆銆瀛楃涓詫紝鎬繪槸涓縐嶉潪甯稿父鐢ㄧ殑楂樼駭綾誨瀷銆傚湪Lua涓紝鎴戜滑鍙互闈炲父鏂逛究鐨勫畾涔夊緢闀垮緢闀跨殑瀛楃涓層?br>銆銆銆銆瀛楃涓插湪Lua涓湁鍑犵鏂規硶鏉ヨ〃紺猴紝鏈閫氱敤鐨勬柟娉曪紝鏄敤鍙屽紩鍙鋒垨鍗曞紩鍙鋒潵鎷搗涓涓瓧絎︿覆鐨勶紝濡傦細
銆銆銆銆"That's go!"
銆銆銆銆鎴?br>銆銆銆銆'Hello world!'
銆銆銆銆鍜孋璇█鐩稿悓鐨勶紝瀹冩敮鎸佷竴浜涜漿涔夊瓧絎︼紝鍒楄〃濡備笅錛?br>銆銆銆銆\a bell
銆銆銆銆\b back space
銆銆銆銆\f form feed
銆銆銆銆\n newline
銆銆銆銆\r carriage return
銆銆銆銆\t horizontal tab
銆銆銆銆\v vertical tab
銆銆銆銆\\ backslash
銆銆銆銆\" double quote
銆銆銆銆\" single quote
銆銆銆銆\[ left square bracket
銆銆銆銆\] right square bracket
銆銆銆銆鐢變簬榪欑瀛楃涓插彧鑳藉啓鍦ㄤ竴琛屼腑錛屽洜姝わ紝涓嶅彲閬垮厤鐨勮鐢ㄥ埌杞箟瀛楃銆傚姞鍏ヤ簡杞箟瀛楃鐨勪覆錛岀湅璧鋒潵瀹炲湪鏄笉鏁㈡伃緇達紝姣斿錛?br>銆銆銆銆"one line\nnext line\n\"in quotes\", "in quotes""
銆銆銆銆涓澶у爢鐨?\"絎﹀彿璁╀漢鐪嬭搗鏉ュ緢鍊掕儍鍙c傚鏋滀綘涓庢垜鏈夊悓鎰燂紝閭d箞錛屾垜浠湪Lua涓紝鍙互鐢ㄥ彟涓縐嶈〃紺烘柟娉曪細鐢?[["鍜?]]"灝嗗琛岀殑瀛楃涓叉嫭璧鋒潵銆傦紙lua5.1: 涓嫭鍙蜂腑闂村彲浠ュ姞鍏ヨ嫢騫蹭釜"="鍙鳳紝濡?[==[ ... ]==]錛岃瑙佷笅闈㈢ず渚?/span>錛?br>銆銆銆銆紺轟緥錛氫笅闈㈢殑璇彞鎵琛ㄧず鐨勬槸瀹屽叏鐩稿悓鐨勫瓧絎︿覆錛?br>
a = 'alo\n123"'
a = "alo\n123\""
a = '\97lo\10\04923"'
a = [[alo
123"]]
a = [==[
alo
123"]==]
銆銆銆銆鍊煎緱娉ㄦ剰鐨勬槸錛屽湪榪欑瀛楃涓蹭腑錛屽鏋滃惈鏈夊崟鐙嬌鐢ㄧ殑"[["鎴?]]"灝變粛鐒跺緱鐢?\["鎴?\]"鏉ラ伩鍏嶆涔夈傚綋鐒訛紝榪欑鎯呭喌鏄瀬灝戜細鍙戠敓鐨勩?br>
銆銆E. Table
銆銆銆銆鍏崇郴琛ㄧ被鍨嬶紝榪欐槸涓涓緢寮哄ぇ鐨勭被鍨嬨傛垜浠彲浠ユ妸榪欎釜綾誨瀷鐪嬩綔鏄竴涓暟緇勩傚彧鏄疌璇█鐨勬暟緇勶紝鍙兘鐢ㄦ鏁存暟鏉ヤ綔绱㈠紩錛涘湪Lua涓紝浣犲彲浠ョ敤浠繪剰綾誨瀷鏉ヤ綔鏁扮粍鐨勭儲寮曪紝闄や簡nil銆傚悓鏍鳳紝鍦–璇█涓紝鏁扮粍鐨勫唴瀹瑰彧鍏佽涓縐嶇被鍨嬶紱鍦↙ua涓紝浣犱篃鍙互鐢ㄤ換鎰忕被鍨嬬殑鍊兼潵浣滄暟緇勭殑鍐呭錛岄櫎浜唍il銆?br>銆銆銆銆Table鐨勫畾涔夊緢綆鍗曪紝瀹冪殑涓昏鐗瑰緛鏄敤"{"鍜?}"鏉ユ嫭璧蜂竴緋誨垪鏁版嵁鍏冪礌鐨勩傛瘮濡傦細
銆銆銆銆T1 = {} -- 瀹氫箟涓涓┖琛?/span>
銆銆銆銆T1[1]=10 -- 鐒跺悗鎴戜滑灝卞彲浠ヨ薄C璇█涓鏍鋒潵浣跨敤瀹冧簡銆?/span>
銆銆銆銆T1["John"]={Age=27, Gender="Male"}
銆銆銆銆榪欎竴鍙ョ浉褰撲簬錛?br>
銆銆銆銆T1["John"]={} -- 蹇呴』鍏堝畾涔夋垚涓涓〃錛岃繕璁板緱鏈畾涔夌殑鍙橀噺鏄痭il綾誨瀷鍚?/span>
銆銆銆銆T1["John"]["Age"]=27
銆銆銆銆T1["John"]["Gender"]="Male"
銆銆銆銆褰撹〃鐨勭儲寮曟槸瀛楃涓茬殑鏃跺欙紝鎴戜滑鍙互綆鍐欐垚錛?br>
銆銆銆銆T1.John={}
銆銆銆銆T1.John.Age=27
銆銆銆銆T1.John.Gender="Male"
銆銆銆銆鎴?br>
銆銆銆銆T1.John{Age=27, Gender="Male"}
銆銆銆銆鍦ㄥ畾涔夎〃鐨勬椂鍊欙紝鎴戜滑鍙互鎶婃墍鏈夌殑鏁版嵁鍐呭涓璧峰啓鍦?{"鍜?}"涔嬮棿錛岃繖鏍峰瓙鏄潪甯告柟渚匡紝鑰屼笖寰堝ソ鐪嬨傛瘮濡傦紝鍓嶉潰鐨凾1鐨勫畾涔夛紝鎴戜滑鍙互榪欎箞鍐欙細
銆銆銆銆T1=
銆銆銆銆{
銆銆銆銆銆銆10, -- 鐩稿綋浜?nbsp;[1] = 10
銆銆銆銆銆銆[100] = 40,
銆銆銆銆銆銆John= -- 濡傛灉浣犲師鎰忥紝浣犺繕鍙互鍐欐垚錛歔"John"] =
銆銆銆銆銆銆{
銆銆銆銆銆銆銆銆Age=27, -- 濡傛灉浣犲師鎰忥紝浣犺繕鍙互鍐欐垚錛歔"Age"] =27
銆銆銆銆銆銆銆銆Gender=Male -- 濡傛灉浣犲師鎰忥紝浣犺繕鍙互鍐欐垚錛歔"Gender"] =Male
銆銆銆銆銆銆},
銆銆銆銆銆銆20 -- 鐩稿綋浜?nbsp;[2] = 20
銆銆銆銆}
銆銆銆銆鐪嬭搗鏉ュ緢婕備寒錛屼笉鏄悧錛熸垜浠湪鍐欑殑鏃跺欙紝闇瑕佹敞鎰忎笁鐐癸細
銆銆銆銆絎竴錛屾墍鏈夊厓绱犱箣闂達紝鎬繪槸鐢ㄩ楀彿"錛?闅斿紑錛?br>銆銆銆銆絎簩錛屾墍鏈夌儲寮曞奸兘闇瑕佺敤"["鍜?]"鎷搗鏉ワ紱濡傛灉鏄瓧絎︿覆錛岃繕鍙互鍘繪帀寮曞彿鍜屼腑鎷彿錛?br>銆銆銆銆絎笁錛屽鏋滀笉鍐欑儲寮曪紝鍒欑儲寮曞氨浼氳璁や負鏄暟瀛楋紝騫舵寜欏哄簭鑷姩浠?寰鍚庣紪錛?br>
銆銆銆銆琛ㄧ被鍨嬬殑鏋勯犳槸濡傛鐨勬柟渚匡紝浠ヨ嚧浜庡父甯歌浜虹敤鏉ヤ唬鏇塊厤緗枃浠躲傛槸鐨勶紝涓嶇敤鎬鐤戯紝瀹冩瘮ini鏂囦歡瑕佹紓浜紝騫朵笖寮哄ぇ鐨勫銆?br>
銆銆F. Function
銆銆銆銆鍑芥暟錛屽湪Lua涓紝鍑芥暟鐨勫畾涔変篃寰堢畝鍗曘傚吀鍨嬬殑瀹氫箟濡備笅錛?br>
銆銆銆銆function add(a,b) -- add 鏄嚱鏁板悕瀛楋紝a鍜宐鏄弬鏁板悕瀛?/span>
銆銆銆銆 return a+b -- return 鐢ㄦ潵榪斿洖鍑芥暟鐨勮繍琛岀粨鏋?/span>
銆銆銆銆end
銆銆銆銆璇鋒敞鎰忥紝return璇█涓瀹氳鍐欏湪end涔嬪墠銆傚亣濡傛垜浠潪瑕佸湪涓棿鏀句笂涓鍙eturn錛岄偅涔堝氨搴旇瑕佸啓鎴愶細do return end銆?br>銆銆銆銆榪樿寰楀墠闈㈣榪囷紝鍑芥暟涔熸槸鍙橀噺綾誨瀷鍚楋紵涓婇潰鐨勫嚱鏁板畾涔夛紝鍏跺疄鐩稿綋浜庯細
銆銆銆銆add = function (a,b) return a+b end
銆銆銆銆鍜孋璇█涓鏍鳳紝Lua鐨勫嚱鏁板彲浠ユ帴鍙楀彲鍙樺弬鏁頒釜鏁幫紝瀹冨悓鏍鋒槸鐢?..."鏉ュ畾涔夌殑錛屾瘮濡傦細
銆銆銆銆function sum (a,b,
)
銆銆銆銆鍒欙紝鍦ㄥ嚱鏁頒腑錛宎 = 1, b = 2, arg = {3, 4} (lua5.1: a = 1, b = 2, ... = {3, 4})
銆銆銆銆鏇村彲璐電殑鏄紝瀹冨彲浠ュ悓鏃惰繑鍥炲涓粨鏋滐紝姣斿錛?br>
銆銆銆銆function s()
銆銆銆銆銆銆return 1,2,3,4
銆銆銆銆end
銆銆銆銆a,b,c,d = s() -- 姝ゆ椂錛宎 = 1, b = 2, c = 3, d = 4
銆銆銆銆鍓嶉潰璇磋繃錛岃〃綾誨瀷鍙互鎷ユ湁浠繪剰綾誨瀷鐨勫鹼紝鍖呮嫭鍑芥暟錛佸洜姝わ紝鏈変竴涓緢寮哄ぇ鐨勭壒鎬ф槸錛屾嫢鏈夊嚱鏁扮殑琛紝鍝︼紝鎴戞兂鏇存伆褰撶殑搴旇璇存槸瀵硅薄鍚с侺ua鍙互浣跨敤闈㈠悜瀵硅薄緙栫▼浜嗐備笉淇★紵涓句緥濡備笅錛?br>
銆銆銆銆t =
銆銆銆銆{
銆銆銆銆 Age = 27
銆銆銆銆 add = function(self, n) self.Age = self.Age+n end
銆銆銆銆}
銆銆銆銆print(t.Age) -- 27
銆銆銆銆t.add(t, 10)
銆銆銆銆print(t.Age) -- 37
銆銆銆銆涓嶈繃錛宼.add(t,10) 榪欎竴鍙ュ疄鍦ㄦ槸鏈夌偣鍦熷鍚э紵娌″叧緋伙紝鍦↙ua涓紝鎴戜滑鍙互綆鍐欐垚錛?br>
銆銆銆銆t:add(10) -- 鐩稿綋浜?nbsp;t.add(t,10)
銆銆G. Userdata 鍜?Thread
銆銆銆銆榪欎袱涓被鍨嬬殑璇濋錛岃秴鍑轟簡鏈枃鐨勫唴瀹癸紝灝變笉鎵撶畻緇嗚浜嗐?br>
VI. 緇撴潫璇?br>銆銆灝辮繖涔堢粨鏉熶簡鍚楋紵褰撶劧涓嶆槸錛屾帴涓嬫潵錛屾垜浠渶瑕佺敤Lua瑙i噴鍣紝鏉ュ府鍔╃悊瑙e拰瀹炶返浜嗐傜浉淇¤繖鏍蜂細鏇村揩鐨勫Lua涓婃墜浜嗐?br>銆銆灝辮薄C璇█涓鏍鳳紝Lua鎻愪緵浜嗙浉褰撳鐨勬爣鍑嗗嚱鏁版潵澧炲己璇█鐨勫姛鑳姐備嬌鐢ㄨ繖浜涙爣鍑嗗嚱鏁幫紝鍙互寰堟柟渚跨殑鎿嶄綔鍚勭鏁版嵁綾誨瀷錛屽茍澶勭悊杈撳叆杈撳嚭銆傛湁鍏寵繖鏂歸潰鐨勪俊鎭紝鎴戜滑鍙互鍙傝冦奝rogramming in Lua 銆嬩竴涔︼紝涔熷彲浠ュ湪緗戠粶涓婄洿鎺ヨ鐪嬬數瀛愮増錛岀綉鍧涓猴細http://www.lua.org/pil/index.html
銆銆
澶囨敞錛氭湰鏂囩殑閮ㄤ喚鍐呭鎽樸佽瘧鑷猯ua闅忔満鏂囨。銆?br>鐩稿叧閾炬帴錛?br>1. Lua 瀹樻柟緗戠珯錛?http://www.lua.org
2. Lua Wiki緗戠珯錛屼綘鍙互鍦ㄨ繖閲屾壘鍒板緢澶氱浉鍏崇殑璧勬枡錛屽鏂囨。銆佹暀紼嬨佹墿灞曪紝浠ュ強C/C++鐨勫寘瑁呯瓑錛?http://lua-users.org/wiki/
3. Lua 鎵撳寘涓嬭澆錛堝寘鎷悇縐嶅鉤鍙板拰緙栬瘧鍣ㄧ殑宸ョ▼鏂囦歡濡倂s2003,vs2005錛夛細http://luabinaries.luaforge.net/download.html
榪欐槸鎴戠紪璇戝ソ鐨凩ua5.02鐨勮В閲婂櫒錛?a >http://files.cnblogs.com/ly4cn/lua.zip
]]>
鐗堟潈鎵鏈?span lang=EN-US>,杞澆璇鋒敞鏄庡嚭澶?span lang=EN-US>,鍕跨敤浜庡晢涓氱敤閫?span lang=EN-US>,璋㈣阿!
浣滆?span lang=EN-US>: 澶у疂澶╁ぉ瑙?span lang=EN-US>
Blog: http://www.shnenglu.com/singohgod
鏈漢姘村鉤鏈夐檺,鏈夐敊璇鋒寚鍑?span lang=EN-US>,嬈㈣繋浜ゆ祦,鍏卞悓榪涙!
鍥藉唴鍏充簬Lua鐨勮祫鏂欏疄鍦ㄦ槸澶皯,涓轟簡瀵繪壘涓涓悎閫傜殑Lua鐨?/span>C++灝佽,鐪熸槸濡傚悓澶ф搗鎹為拡.鍦ㄧ湅浜嗕紬澶氳祫鏂欏悗閿佸畾浠ヤ笅鍑犵:LuaBind ToLua++ LuaPlus.鍦ㄩ夋嫨涓婇鏈夎鍒虹殑鍛抽亾,LuaBind鐨勭増鏈彿榪樻病鍒?/span>1.0,鍔犱笂緗戝弸棰囨湁寰瘝,鏀懼純.ToLua++鏈潵鏈夋湅鍙嬫帹鑽?/span>,浣嗘槸鎬庝箞閮芥壘涓嶅埌涓嬭澆,瀹樼綉灝辨槸鎵撲笉寮,鏃犺禆鏀懼純.灝卞彧鏈?/span>LuaPlus浜?/span>,鐪嬪埌涓浜涗漢鐨勮瘎浠瘋繕琛?/span>,浜庢槸鍐沖畾灝辯敤瀹冨惂.
LuaPlus鐨勮祫鏂欏氨鏇村皯浜?/span>,榪炴庝箞閰嶇疆鎬庝箞璋冭瘯絳変粈涔堥兘娌℃湁,鍙湁娌愭灚澶у摜璁茶В浜嗚娉曟柟闈㈢殑涓綃囨枃绔?/span>.鍟婂摕,鎬庝箞鎼炲憿,闅鵑亾鍙堝彧鏈夌‖鐫澶寸毊涓婁簡?(鏌愪紵浜烘浘璇磋繃,浣嗗嚒鏉板嚭鐨勪簨閮芥槸紜潃澶寸毊騫插嚭鏉ユ淮)
濂戒簡,璦褰掓浼?/span>,涓嬮潰璁茶鎴戠殑緇忛獙鍚?/span>:
濡備綍緙栬瘧
1. 涓嬭澆
棣栧厛鍒板畼鏂圭綉绔欎笅杞?/span>: http://www.luaplus.org/
涓嬭澆榪欎釜: All source code: http://luaplus.org/LuaPlus51_Build1100.zip (鎴戝綋鍓嶇殑鐗堟湰,褰撶劧瓚婃柊瓚婂ソ)
2. 鍓ョ
瑙e紑涓嬭澆鍖?/span>,鎵撳紑 \LuaPlus51_Build1100\Src\LuaPlus 閲岄潰鏄叏閮ㄦ簮鏂囦歡,src涓嬫槸lua鐨勬簮鏂囦歡.榪欓噷鏈変釜浠や漢鐤戞儜鐨勫湴鏂?/span>,婧愭枃浠朵腑甯︿簡涓浜涗笉闇瑕佺殑鏂囦歡,瑕佸墧闄ゅ幓,鍩烘湰涓婇渶瑕佷互涓嬭繖浜涙枃浠?/span>:
1) Lua搴撴枃浠?/span>:
lapi.c lapi.h lauxlib.c lauxlib.h lbaselib.c lcode.c lcode.h ldblib.c ldebug.c ldebug.h ldo.c ldo.h ldump.c lfunc.c lfunc.h lgc.c lgc.h linit.c |
liolib.c llex.c llex.h llimits.h lmathlib.c lmem.c lmem.h loadlib.c lobject.c lobject.h lopcodes.c lopcodes.h loslib.c lparser.c lparser.h lstate.c lstate.h lstring.c |
lstring.h lstrlib.c ltable.c ltable.h ltablib.c ltm.c ltm.h lua.h luaconf.h lualib.h lundump.c lundump.h lvm.c lvm.h lzio.c lzio.h print.c |
2) LuaPlus澶存枃浠?/span>:
auxiliar.h LuaAutoBlock.h LuaCall.h LuaFunction.h LuaHelper.h LuaHelper_Object.h LuaHelper_StackObject.h LuaLink.h LuaObject.h LuaObject.inl LuaPlus.h LuaPlusCD.h |
LuaPlusFunctions.h LuaPlusInternal.h LuaStackObject.h LuaStackObject.inl LuaStackTableIterator.h LuaState.h LuaState.inl LuaStateOutFile.h LuaTableIterator.h luathread.h pt.h srm.h |
3) LuaPlus婧愭枃浠?/span>
LuaCall.cpp LuaObject.cpp LuaPlus.cpp LuaPlusAddons.c LuaPlusFunctions.cpp LuaPlus_Libs.cpp LuaStackObject.cpp |
LuaStackTableIterator.cpp LuaState.cpp LuaStateOutFile.cpp LuaState_DumpObject.cpp LuaTableIterator.cpp lwstrlib.c |
3. 寤虹珛欏圭洰
鐒跺悗浣犲氨鍙互鍦?/span>VS涓緩绔嬩竴涓柊欏圭洰,闈欐侀摼鎺ュ簱鐨?/span>:
鍒嗗埆鎶婇渶瑕佺殑鏂囦歡鍔犺繘鍘?/span>,涔嬪悗緙栬瘧,搴旇鑳介氳繃浜?/span>.
濡備綍浣跨敤
鎺ョ潃璁茶濡備綍鍦ㄤ綘鐨勫叾浠栭」鐩腑浣跨敤LuaPlus.
1.蹇呰鐨勯厤緗?/span>
浣犵殑欏圭洰鍙兘鏄繖鏍風殑:
璁劇疆GameClient鐨勪緷璧栭」鏄?/span>LuaPlusLib
#include "LuaPlus.h"
using namespace LuaPlus;
璁板緱騫茶繖浜?/span>…
2.鍒涘緩涓涓姸鎬?/span>
LuaStateOwner state;
浠婂悗鐨勬搷浣滈兘鍥寸粫榪欎釜state
3.鎵ц鑴氭湰
int iret = state->DoFile("test.lua");
榪斿洖鍊間負0琛ㄧず鎴愬姛,鍚﹀垯涓嶆垚鍔?/span>.
4.C++涓幏鍙?/span>Lua鑴氭湰鐨勫彉閲?/span>
鍋囪浣犵殑test.lua涓湁:
health = 200;
閫氳繃涓嬪垪鏂規硶灝卞彲浠ュ湪C++涓緱鍒拌繖涓暟鍊?/span>
int mytest = state->GetGlobal("health").GetInteger();
5.C++涓皟鐢?/span>Lua鑴氭湰閲岀殑鍑芥暟
鍋囪浣犵殑test.lua涓湁:
function Add(x, y)
return x+y;
end
鍦?/span>C++涓渶瑕佸厛澹版槑榪欎釜鍑芥暟:
LuaFunction<float> Add = state->GetGlobal("Add");
榪欐牱浣犲氨鏈変簡Add()榪欎釜鍑芥暟,鐒跺悗灝卞彲浠ュ儚騫沖父涓鏍蜂嬌鐢ㄥ畠浜?/span>:
float myret = Add(
6.Lua鑴氭湰涓皟鐢?/span>C++鍑芥暟
鍦ㄨ鍙?/span>test.lua涔嬪墠瑕佸厛鎶?/span>C++鍑芥暟娉ㄥ唽鍒?/span>Lua鐨勮繍琛屾椂鏍堥噷,榪欐牱鍦ㄦ墽琛?/span>lua鑴氭湰鐨勬椂鍊?/span>,鎵嶇煡閬撴墽琛屽摢涓涓嚱鏁?/span>:
棣栧厛鏈夊嚱鏁?/span>:
int LS_PrintNumber(LuaState* state)
{
LuaStack args(state);
if (args[1].IsNumber()) {
printf("%f\n", args[1].GetNumber());
}
return 0;
}
鐒跺悗娉ㄥ唽榪欎釜鍑芥暟鍒?/span>Lua:
state->GetGlobals().Register("PrintNumber", LS_PrintNumber);
榪欐牱灝辨妸LS_PrintNumber鏄犲皠涓?/span>Lua涓彲浠ヤ嬌鐢ㄧ殑鍑芥暟PrintNumber.
Test.lua鑴氭湰涓坊鍔犺皟鐢ㄨ鍙?/span>:
PrintNumber(30);
褰?/span>state->DoFile("test.lua");鎵ц鐨勬椂鍊?/span>,灝辨墽琛屼簡C++涓殑榪欎釜鍑芥暟.
鎬葷粨
鏈枃浠嬬粛浜?/span>LuaPlus鐨勫熀鏈厤緗柟娉曞拰浣跨敤,甯屾湜瀵逛綘鏈夊府鍔?/span>.涓嬩竴綃囧皢浠嬬粛涓浜涢珮綰х壒鎬?/span>,濡傛庢牱鍦?/span>VS涓皟璇?/span>LuaPlus鐨勮剼鏈?/span>,浠ュ強瀵圭被鐨勬搷浣滅瓑.
濡傛灉榪樻湁浠諱綍鐤戦棶鍙互鐪嬬湅涓嬮潰榪欎釜綆鍗曠殑渚嬪瓙:
/Files/singohgod/LuaPlus_Test.rar