銆銆Lua 鐨勮娉曟瘮杈冪畝鍗曪紝瀛︿範(fàn)璧鋒潵涔熸瘮杈冪渷鍔涳紝浣嗗姛鑳藉嵈騫朵笉寮便?/p>
銆銆鍦↙ua涓紝涓鍒囬兘鏄彉閲忥紝闄や簡鍏抽敭瀛椼傝璁頒綇榪欏彞璇濄?/p>
I. 棣栧厛鏄敞閲?/strong>
銆銆鍐欎竴涓▼搴忥紝鎬繪槸灝戜笉浜嗘敞閲婄殑銆?br />銆銆鍦↙ua涓紝浣犲彲浠ヤ嬌鐢ㄥ崟琛屾敞閲婂拰澶氳娉ㄩ噴銆?br />銆銆鍗曡娉ㄩ噴涓紝榪炵畫涓や釜鍑忓彿"--"琛ㄧず娉ㄩ噴鐨勫紑濮嬶紝涓鐩村歡緇埌琛屾湯涓烘銆傜浉褰撲簬C++璇█涓殑"http://"銆?br />銆銆澶氳娉ㄩ噴涓紝鐢?--[["琛ㄧず娉ㄩ噴寮濮嬶紝騫朵笖涓鐩村歡緇埌"]]"涓烘銆傝繖縐嶆敞閲婄浉褰撲簬C璇█涓殑"/*…*/"銆傚湪娉ㄩ噴褰撲腑錛?[["鍜?]]"鏄彲浠ュ祵濂楃殑銆?/p>
II. Lua緙栫▼
銆銆緇忓吀鐨?Hello world"鐨勭▼搴忔繪槸琚敤鏉ュ紑濮嬩粙緇嶄竴縐嶈璦銆傚湪Lua涓紝鍐欎竴涓繖鏍風(fēng)殑紼嬪簭寰堢畝鍗曪細(xì)
銆銆print("Hello world")
銆銆鍦↙ua涓紝璇彞涔嬮棿鍙互鐢ㄥ垎鍙?錛?闅斿紑錛屼篃鍙互鐢ㄧ┖鐧介殧寮銆備竴鑸潵璇達(dá)紝濡傛灉澶氫釜璇彞鍐欏湪鍚屼竴琛岀殑璇濓紝寤鴻鎬繪槸鐢ㄥ垎鍙烽殧寮銆?br />銆銆Lua 鏈夊ソ鍑犵紼嬪簭鎺у埗璇彞錛屽錛?/p>
銆銆鏉′歡鎺у埗錛歩f 鏉′歡 then … elseif 鏉′歡 then … else … end
銆銆While寰幆錛歸hile 鏉′歡 do … end
銆銆Repeat寰幆錛歳epeat … until 鏉′歡
銆銆For寰幆錛歠or 鍙橀噺 = 鍒濆鹼紝緇堢偣鍊鹼紝姝ヨ繘 do … end
銆銆For寰幆錛歠or 鍙橀噺1錛屽彉閲?錛?#8230; 錛屽彉閲廚 in琛ㄦ垨鏋氫婦鍑芥暟 do … end
銆銆娉ㄦ剰涓涓嬶紝for鐨勫驚鐜彉閲忔繪槸鍙綔鐢ㄤ簬for鐨勫眬閮ㄥ彉閲忥紝浣犱篃鍙互鐪佺暐姝ヨ繘鍊鹼紝榪欐椂鍊欙紝for寰幆浼?xì)鋴社?浣滀負(fù)姝ヨ繘鍊箋?br />銆銆浣犲彲浠ョ敤break鏉ヤ腑姝竴涓驚鐜?br />銆銆濡傛灉浣犳湁紼嬪簭璁捐鐨勫熀紜錛屾瘮濡備綘瀛﹁繃Basic錛孋涔嬬被鐨勶紝浣犱細(xì)瑙夊緱Lua涔熶笉闅俱備絾Lua鏈夊嚑涓湴鏂規(guī)槸鏄庢樉涓嶅悓浜庤繖浜涚▼搴忚璁¤璦鐨勶紝鎵浠ヨ鐗瑰埆娉ㄦ剰銆?/p>
銆銆錛庤鍙ュ潡
銆銆銆銆璇彞鍧楀湪C++涓槸鐢?{"鍜?}"鎷搗鏉ョ殑錛屽湪Lua涓紝瀹冩槸鐢╠o 鍜?end 鎷搗鏉ョ殑銆傛瘮濡傦細(xì)
銆銆銆銆do print("Hello") end
銆銆銆銆浣犲彲浠ュ湪 鍑芥暟 涓拰 璇彞鍧?涓畾灞閮ㄥ彉閲忋?/p>
銆銆錛庤祴鍊艱鍙?br />銆銆銆銆璧嬪艱鍙ュ湪Lua琚己鍖栦簡銆傚畠鍙互鍚屾椂緇欏涓彉閲忚祴鍊箋?br />銆銆銆銆渚嬪錛?br />銆銆銆銆a,b,c,d=1,2,3,4
銆銆銆銆鐢氳嚦鏄細(xì)
銆銆銆銆a,b=b,a -- 澶氫箞鏂逛究鐨勪氦鎹㈠彉閲忓姛鑳藉晩銆?br />銆銆銆銆鍦ㄩ粯璁ゆ儏鍐典笅錛屽彉閲忔繪槸璁や負(fù)鏄叏灞鐨勩傚亣濡備綘瑕佸畾涔夊眬閮ㄥ彉閲忥紝鍒欏湪絎竴嬈¤祴鍊肩殑鏃跺欙紝闇瑕佺敤local璇存槑銆傛瘮濡傦細(xì)
銆銆銆銆local a,b,c = 1,2,3 -- a,b,c閮芥槸灞閮ㄥ彉閲?/p>
銆銆錛庢暟鍊艱繍綆?br />銆銆銆銆鍜孋璇█涓鏍鳳紝鏀寔 +, -, *, /銆備絾Lua榪樺浜嗕竴涓?^"銆傝繖琛ㄧず鎸囨暟涔樻柟榪愮畻銆傛瘮濡?^3 緇撴灉涓?, 2^4緇撴灉涓?6銆?br />銆銆銆銆榪炴帴涓や釜瀛楃涓詫紝鍙互鐢?.."榪愬絎︺傚錛?br />銆銆銆銆"This a " .. "string." -- 絳変簬 "this a string"
銆銆錛庢瘮杈冭繍綆?br />銆銆銆銆< > <= >= == ~=
銆銆銆銆鍒嗗埆琛ㄧず 灝忎簬錛屽ぇ浜庯紝涓嶅ぇ浜庯紝涓嶅皬浜庯紝鐩哥瓑錛屼笉鐩哥瓑
銆銆銆銆鎵鏈夎繖浜涙搷浣滅鎬繪槸榪斿洖true鎴杅alse銆?br />銆銆銆銆瀵逛簬Table錛孎unction鍜孶serdata綾誨瀷鐨勬暟鎹紝鍙湁 == 鍜?~=鍙互鐢ㄣ傜浉絳夎〃紺轟袱涓彉閲忓紩鐢ㄧ殑鏄悓涓涓暟鎹傛瘮濡傦細(xì)
銆銆銆銆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鎵嶈綆椾負(fù)false錛屽叾瀹冧換浣曟暟鎹兘璁$畻涓簍rue錛?涔熸槸true錛?br />銆銆銆銆and 鍜?or鐨勮繍綆楃粨鏋滀笉鏄痶rue鍜宖alse錛岃屾槸鍜屽畠鐨勪袱涓搷浣滄暟鐩稿叧銆?br />銆銆銆銆a and b錛氬鏋渁涓篺alse錛屽垯榪斿洖a錛涘惁鍒欒繑鍥瀊
銆銆銆銆a or b錛氬鏋?a 涓簍rue錛屽垯榪斿洖a錛涘惁鍒欒繑鍥瀊
銆銆銆銆涓懼嚑涓緥瀛愶細(xì)
銆銆銆銆 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錛屽畠鐩稿綋浜庯細(xì)if not x then x = v end 銆?/p>
銆銆錛庤繍綆楃浼樺厛綰э紝浠庨珮鍒頒綆欏哄簭濡備笅錛?br />銆銆銆銆^
銆銆銆銆not - 錛堜竴鍏冭繍綆楋級
銆銆銆銆 * /
銆銆銆銆 + -
銆銆銆銆 ..錛堝瓧絎︿覆榪炴帴錛?br />銆銆銆銆 < > <= >= ~= ==
銆銆銆銆 and
銆銆銆銆 or
III. 鍏抽敭瀛?/strong> 銆銆鍏抽敭瀛楁槸涓嶈兘鍋氫負(fù)鍙橀噺鐨勩侺ua鐨勫叧閿瓧涓嶅錛屽氨浠ヤ笅鍑犱釜錛?br />銆銆and break do else elseif IV. 鍙橀噺綾誨瀷 銆銆鎬庝箞紜畾涓涓彉閲忔槸浠涔堢被鍨嬬殑鍛紵澶у鍙互鐢╰ype()鍑芥暟鏉ユ鏌ャ侺ua鏀寔鐨勭被鍨嬫湁浠ヤ笅鍑犵錛?/p> 銆銆Nil 絀哄鹼紝鎵鏈夋病鏈変嬌鐢ㄨ繃鐨勫彉閲忥紝閮芥槸nil銆俷il鏃㈡槸鍊鹼紝鍙堟槸綾誨瀷銆?br />銆銆Boolean 甯冨皵鍊?br />銆銆Number 鏁板鹼紝鍦↙ua閲岋紝鏁板肩浉褰撲簬C璇█鐨刣ouble V. 鍙橀噺鐨勫畾涔?/strong> 銆銆鎵鏈夌殑璇█錛岄兘瑕佺敤鍒板彉閲忋傚湪Lua涓紝涓嶇浣犲湪浠涔堝湴鏂逛嬌鐢ㄥ彉閲忥紝閮戒笉闇瑕佸0鏄庯紝騫朵笖鎵鏈夌殑榪欎簺鍙橀噺鎬繪槸鍏ㄥ眬鍙橀噺錛岄櫎闈烇紝浣犲湪鍓嶉潰鍔犱笂"local"銆?br />銆銆榪欎竴鐐硅鐗瑰埆娉ㄦ剰錛屽洜涓轟綘鍙兘鎯沖湪鍑芥暟閲屼嬌鐢ㄥ眬閮ㄥ彉閲忥紝鍗村繕浜嗙敤local鏉ヨ鏄庛?br />銆銆鑷充簬鍙橀噺鍚嶅瓧錛屽畠鏄ぇ灝忓啓鐩稿叧鐨勩備篃灝辨槸璇達(dá)紝A鍜宎鏄袱涓笉鍚岀殑鍙橀噺銆?br />銆銆瀹氫箟涓涓彉閲忕殑鏂規(guī)硶灝辨槸璧嬪箋?錛?鎿嶄綔灝辨槸鐢ㄦ潵璧嬪肩殑 銆銆B. Boolean 銆銆C. Number 銆銆D. String 銆銆銆銆鐢變簬榪欑瀛楃涓插彧鑳藉啓鍦ㄤ竴琛屼腑錛屽洜姝わ紝涓嶅彲閬垮厤鐨勮鐢ㄥ埌杞箟瀛楃銆傚姞鍏ヤ簡杞箟瀛楃鐨勪覆錛岀湅璧鋒潵瀹炲湪鏄笉鏁㈡伃緇達(dá)紝姣斿錛?br />銆銆銆銆"one line\nnext line\n\"in quotes\", 'in quotes'" 銆銆銆銆鍊煎緱娉ㄦ剰鐨勬槸錛屽湪榪欑瀛楃涓蹭腑錛屽鏋滃惈鏈夊崟鐙嬌鐢ㄧ殑"[["鎴?]]"灝變粛鐒跺緱鐢?\["鎴?\]"鏉ラ伩鍏嶆涔夈傚綋鐒訛紝榪欑鎯呭喌鏄瀬灝戜細(xì)鍙戠敓鐨勩?/p> |
E. Table
銆銆銆銆鍏崇郴琛ㄧ被鍨嬶紝榪欐槸涓涓緢寮哄ぇ鐨勭被鍨嬨傛垜浠彲浠ユ妸榪欎釜綾誨瀷鐪嬩綔鏄竴涓暟緇勩傚彧鏄疌璇█鐨勬暟緇勶紝鍙兘鐢ㄦ鏁存暟鏉ヤ綔绱㈠紩錛涘湪Lua涓紝浣犲彲浠ョ敤浠繪剰綾誨瀷鏉ヤ綔鏁扮粍鐨勭儲寮曪紝闄や簡nil銆傚悓鏍鳳紝鍦–璇█涓紝鏁扮粍鐨勫唴瀹瑰彧鍏佽涓縐嶇被鍨嬶紱鍦↙ua涓紝浣犱篃鍙互鐢ㄤ換鎰忕被鍨嬬殑鍊兼潵浣滄暟緇勭殑鍐呭錛岄櫎浜唍il銆?br />銆銆銆銆Table鐨勫畾涔夊緢綆鍗曪紝瀹冪殑涓昏鐗瑰緛鏄敤"{"鍜?}"鏉ユ嫭璧蜂竴緋誨垪鏁版嵁鍏冪礌鐨勩傛瘮濡傦細(xì)
銆銆銆銆T1 = {} -- 瀹氫箟涓涓┖琛?br />銆銆銆銆T1[1]=10 -- 鐒跺悗鎴戜滑灝卞彲浠ヨ薄C璇█涓鏍鋒潵浣跨敤瀹冧簡銆?br />銆銆銆銆T1["John"]={Age=27, Gender="Male"}
銆銆銆銆榪欎竴鍙ョ浉褰撲簬錛?br />銆銆銆銆T1["John"]={} -- 蹇呴』鍏堝畾涔夋垚涓涓〃錛岃繕璁板緱鏈畾涔夌殑鍙橀噺鏄痭il綾誨瀷鍚?br />銆銆銆銆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"}
銆銆銆銆榪欐槸涓涓緢寮虹殑鐗規(guī)с?/p>
銆銆銆銆鍦ㄥ畾涔夎〃鐨勬椂鍊欙紝鎴戜滑鍙互鎶婃墍鏈夌殑鏁版嵁鍐呭涓璧峰啓鍦?{"鍜?}"涔嬮棿錛岃繖鏍峰瓙鏄潪甯告柟渚匡紝鑰屼笖寰堝ソ鐪嬨傛瘮濡傦紝鍓嶉潰鐨凾1鐨勫畾涔夛紝鎴戜滑鍙互榪欎箞鍐欙細(xì)
銆銆銆銆T1=
銆銆銆銆{
銆銆銆銆銆銆10, -- 鐩稿綋浜?[1] = 10
銆銆銆銆銆銆[100] = 40,
銆銆銆銆銆銆John= -- 濡傛灉浣犲師鎰忥紝浣犺繕鍙互鍐欐垚錛歔"John"] =
銆銆銆銆銆銆{
銆銆銆銆銆銆銆銆Age=27, -- 濡傛灉浣犲師鎰忥紝浣犺繕鍙互鍐欐垚錛歔"Age"] =27
銆銆銆銆銆銆銆銆Gender=Male -- 濡傛灉浣犲師鎰忥紝浣犺繕鍙互鍐欐垚錛歔"Gender"] =Male
銆銆銆銆銆銆},
銆銆銆銆銆銆20 -- 鐩稿綋浜?[2] = 20
銆銆銆銆}
銆銆銆銆鐪嬭搗鏉ュ緢婕備寒錛屼笉鏄悧錛熸垜浠湪鍐欑殑鏃跺欙紝闇瑕佹敞鎰忎笁鐐癸細(xì)
銆銆銆銆絎竴錛屾墍鏈夊厓绱犱箣闂達(dá)紝鎬繪槸鐢ㄩ楀彿"錛?闅斿紑錛?br />銆銆銆銆絎簩錛屾墍鏈夌儲寮曞奸兘闇瑕佺敤"["鍜?]"鎷搗鏉ワ紱濡傛灉鏄瓧絎︿覆錛岃繕鍙互鍘繪帀寮曞彿鍜屼腑鎷彿錛?br />銆銆銆銆絎笁錛屽鏋滀笉鍐欑儲寮曪紝鍒欑儲寮曞氨浼?xì)琚湄?fù)鏄暟瀛楋紝騫舵寜欏哄簭鑷姩浠?寰鍚庣紪錛?/p>
銆銆銆銆琛ㄧ被鍨嬬殑鏋勯犳槸濡傛鐨勬柟渚匡紝浠ヨ嚧浜庡父甯歌浜虹敤鏉ヤ唬鏇塊厤緗枃浠躲傛槸鐨勶紝涓嶇敤鎬鐤戯紝瀹冩瘮ini鏂囦歡瑕佹紓浜紝騫朵笖寮哄ぇ鐨勫銆?/p>
銆銆F. Function
銆銆銆銆鍑芥暟錛屽湪Lua涓紝鍑芥暟鐨勫畾涔変篃寰堢畝鍗曘傚吀鍨嬬殑瀹氫箟濡備笅錛?br />銆銆銆銆function add(a,b) -- add 鏄嚱鏁板悕瀛楋紝a鍜宐鏄弬鏁板悕瀛?br />銆銆銆銆 return a+b -- return 鐢ㄦ潵榪斿洖鍑芥暟鐨勮繍琛岀粨鏋?br />銆銆銆銆end
銆銆銆銆璇鋒敞鎰忥紝return璇█涓瀹氳鍐欏湪end涔嬪墠銆傚亣濡備綘闈炶鍦ㄤ腑闂存斁涓婁竴鍙eturn錛岄偅涔堣鍐欐垚錛歞o return end銆?br />銆銆銆銆榪樿寰楀墠闈㈣榪囷紝鍑芥暟涔熸槸鍙橀噺綾誨瀷鍚楋紵涓婇潰鐨勫嚱鏁板畾涔夛紝鍏跺疄鐩稿綋浜庯細(xì)
銆銆銆銆add = function (a,b) return a+b end
銆銆銆銆褰撲綘閲嶆柊緇檃dd璧嬪兼椂錛屽畠?yōu)兏嶅啀琛ńC鴻繖涓嚱鏁頒簡銆備綘鐢氳嚦鍙互璧嬬粰add浠繪剰鏁版嵁錛屽寘鎷琻il 錛堣繖鏍鳳紝浣犲氨娓呴櫎浜哸dd鍙橀噺錛夈侳unction鏄笉鏄緢璞璇█鐨勫嚱鏁版寚閽堝憿錛?/p>
銆銆銆銆鍜孋璇█涓鏍鳳紝Lua鐨勫嚱鏁板彲浠ユ帴鍙楀彲鍙樺弬鏁頒釜鏁幫紝瀹冨悓鏍鋒槸鐢?…"鏉ュ畾涔夌殑錛屾瘮濡傦細(xì)
銆銆銆銆function sum (a,b,…)
銆銆銆銆濡傛灉鎯沖彇寰?#8230;鎵浠h〃鐨勫弬鏁幫紝鍙互鍦ㄥ嚱鏁頒腑璁塊棶a(chǎn)rg灞閮ㄥ彉閲忥紙琛ㄧ被鍨嬶級寰楀埌銆?br />銆銆銆銆濡?sum(1,2,3,4)
銆銆銆銆鍒欙紝鍦ㄥ嚱鏁頒腑錛宎 = 1, b = 2, arg = {3, 4}
銆銆銆銆鏇村彲璐電殑鏄紝瀹冨彲浠ュ悓鏃惰繑鍥炲涓粨鏋滐紝姣斿錛?br />銆銆銆銆function s()
銆銆銆銆銆銆return 1,2,3,4
銆銆銆銆end
銆銆銆銆a,b,c,d = s() -- 姝ゆ椂錛宎 = 1, b = 2, c = 3, d = 4
鍓嶉潰璇磋繃錛岃〃綾誨瀷鍙互鎷ユ湁浠繪剰綾誨瀷鐨勫鹼紝鍖呮嫭鍑芥暟錛佸洜姝わ紝鏈変竴涓緢寮哄ぇ鐨勭壒鎬ф槸錛屾嫢鏈夊嚱鏁扮殑琛紝鍝︼紝鎴戞兂鏇存伆褰撶殑搴旇璇存槸瀵硅薄鍚с侺ua鍙互浣跨敤闈㈠悜瀵硅薄緙栫▼浜嗐備笉淇★紵閭f垜涓句緥濡備笅錛?/p>
銆銆銆銆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) -- 鐩稿綋浜?t.add(t,10)
銆銆G. Userdata 鍜?Thread
銆銆銆銆榪欎袱涓被鍨嬬殑璇濋錛岃秴鍑轟簡鏈枃鐨勫唴瀹癸紝灝變笉鎵撶畻緇嗚浜嗐?/p>===========================================================
VI. 緇撴潫璇?/strong>
銆銆灝辮繖涔堢粨鏉熶簡鍚楋紵褰撶劧涓嶆槸錛屾帴涓嬫潵錛岄渶瑕佺敤Lua瑙i噴鍣紝鏉ュ府鍔╀綘鐞嗚В鍜屽疄璺典簡銆傝繖綃囧皬鏂囧彧鏄府鍔╀綘澶т綋浜嗚ВLua鐨勮娉曘傚鏋滀綘鏈夌紪紼嬪熀紜錛岀浉淇′細(xì)寰堝揩瀵筁ua涓婃墜浜嗐?br />銆銆灝辮薄C璇█涓鏍鳳紝Lua鎻愪緵浜嗙浉褰撳鐨勬爣鍑嗗嚱鏁版潵澧炲己璇█鐨勫姛鑳姐備嬌鐢ㄨ繖浜涙爣鍑嗗嚱鏁幫紝浣犲彲浠ュ緢鏂逛究鐨勬搷浣滃悇縐嶆暟鎹被鍨嬶紝騫跺鐞嗚緭鍏ヨ緭鍑恒傛湁鍏寵繖鏂歸潰鐨勪俊鎭紝浣犲彲浠ュ弬鑰冦奝rogramming in Lua 銆嬩竴涔︼紝浣犲彲浠ュ湪緗戠粶涓婄洿鎺ヨ鐪嬬數(shù)瀛愮増錛岀綉鍧涓猴細(xì)http://www.lua.org/pil/index.html
銆銆褰撶劧錛孡ua鐨勬渶寮哄ぇ鐨勫姛鑳芥槸鑳戒笌瀹夸富紼嬪簭浜茶湝鏃犻棿鐨勫悎浣滐紝鍥犳錛屼笅涓綃囨枃绔狅紝鎴戜細(xì)鍛婅瘔澶у錛屽浣曞湪浣犵殑紼嬪簭涓嬌鐢↙ua璇█浣滀負(fù)鑴氭湰錛屼嬌浣犵殑紼嬪簭鍜孡ua鑴氭湰榪涜浜や簰銆?/p>
浣跨敤嫻佺▼
1. 鍑芥暟鐨勪嬌鐢?/strong>
浠ヤ笅紼嬪簭婕旂ず浜嗗浣曞湪Lua涓嬌鐢ㄥ嚱鏁? 鍙?qiáng)灞閮ㄥ彉閲?br />渚媏02.lua
-- functions
function pythagorean(a, b)
local c2 = a^2 + b^2
return sqrt(c2)
end
print(pythagorean(3,4))
榪愯緇撴灉
5
紼嬪簭璇存槑
鍦↙ua涓嚱鏁扮殑瀹氫箟鏍煎紡涓?
function 鍑芥暟鍚?鍙傛暟)
...
end
涓嶱ascal璇█涓嶅悓, end涓嶉渶瑕佷笌begin閰嶅, 鍙渶瑕佸湪鍑芥暟緇撴潫鍚庢墦涓猠nd灝卞彲浠ヤ簡.鏈緥鍑芥暟鐨勪綔鐢ㄦ槸宸茬煡鐩磋涓夎褰㈢洿瑙掕竟, 姹傛枩杈歸暱搴? 鍙傛暟a,b鍒嗗埆琛ㄧず鐩磋杈歸暱,
鍦ㄥ嚱鏁板唴瀹氫箟浜唋ocal褰㈠彉閲忕敤浜庡瓨鍌ㄦ枩杈圭殑騫蟲柟. 涓嶤璇█鐩稿悓, 瀹氫箟鍦ㄥ嚱鏁板唴鐨勪唬鐮佷笉浼?xì)琚洿鎺ユ墽琛? 鍙湁涓葷▼搴忚皟鐢ㄦ椂鎵嶄細(xì)琚墽琛?
local琛ㄧず瀹氫箟涓涓眬閮ㄥ彉閲? 濡傛灉涓嶅姞local鍒氳〃紺篶2涓轟竴涓叏灞鍙橀噺, local鐨勪綔鐢ㄥ煙鏄湪鏈閲屽眰鐨別nd鍜屽叾閰嶅鐨勫叧閿瓧涔嬮棿, 濡俰f ... end, while ... end絳夈傚叏灞鍙橀噺鐨勪綔鐢ㄥ煙鏄暣涓▼搴忋?/p>
2. 寰幆璇彞
渚媏03.lua
-- Loops
for i=1,5 do
print("i is now " .. i)
end
榪愯緇撴灉
i is now 1
i is now 2
i is now 3
i is now 4
i is now 5
紼嬪簭璇存槑
榪欓噷鍋朵滑鐢ㄥ埌浜唂or璇彞
for 鍙橀噺 = 鍙傛暟1, 鍙傛暟2, 鍙傛暟3 do
寰幆浣?br />end
鍙橀噺灝嗕互鍙傛暟3涓烘闀? 鐢卞弬鏁?鍙樺寲鍒板弬鏁?
渚嬪:
for i=1,f(x) do print(i) end
for i=10,1,-1 do print(i) end
榪欓噷print("i is now " .. i)涓紝鍋朵滑鐢ㄥ埌浜?.錛岃繖鏄敤鏉ヨ繛鎺ヤ袱涓瓧絎︿覆鐨勶紝鍋跺湪(1)鐨勮瘯璇曠湅涓彁鍒扮殑錛屼笉鐭ラ亾浣犱滑絳斿浜嗘病鏈夈傝櫧鐒惰繖閲宨鏄竴涓暣鍨嬮噺錛孡ua鍦ㄥ鐞嗙殑鏃跺欎細(xì)鑷姩杞垚瀛楃涓插瀷錛屼笉闇鍋朵滑璐瑰績銆?/p>
3. 鏉′歡鍒嗘敮璇彞
渚媏04.lua
-- Loops and conditionals
for i=1,5 do
print(“i is now “ .. i)
if i < 2 then
print(“small”)
elseif i < 4 then
print(“medium”)
else
print(“big”)
end
end
榪愯緇撴灉
i is now 1
small
i is now 2
medium
i is now 3
medium
i is now 4
big
i is now 5
big
紼嬪簭璇存槑
if else鐢ㄦ硶姣旇緝綆鍗? 綾諱技浜嶤璇█, 涓嶈繃姝ゅ闇瑕佹敞鎰忕殑鏄暣涓猧f鍙渶瑕佷竴涓猠nd,鍝曠敤浜嗗涓猠lseif, 涔熸槸涓涓猠nd.
渚嬪
if op == "+" then
r = a + b
elseif op == "-" then
r = a - b
elseif op == "*" then
r = a*b
elseif op == "/" then
r = a/b
else
error("invalid operation")
end
4.璇曡瘯鐪?/strong>
Lua涓櫎浜唂or寰幆浠ュ, 榪樻敮鎸佸縐嶅驚鐜? 璇風(fēng)敤while...do鍜宺epeat...until鏀瑰啓鏈枃涓殑for紼嬪簭銆?br />
鏁扮粍鐨勪嬌鐢?/strong>
1.綆浠?/strong>
Lua璇█鍙湁涓縐嶅熀鏈暟鎹粨鏋? 閭e氨鏄痶able, 鎵鏈夊叾浠栨暟鎹粨鏋勫鏁扮粍鍟?綾誨暒, 閮藉彲浠ョ敱table瀹炵幇.
2.table鐨勪笅鏍?/strong>
渚媏05.lua
-- Arrays
myData = {}
myData[0] = “foo”
myData[1] = 42
-- Hash tables
myData[“bar”] = “baz”
-- Iterate through the
-- structure
for key, value in myData do
print(key .. “=“ .. value)
end
杈撳嚭緇撴灉
0=foo
1=42
bar=baz
紼嬪簭璇存槑
棣栧厛瀹氫箟浜嗕竴涓猼able myData={}, 鐒跺悗鐢ㄦ暟瀛椾綔涓轟笅鏍囪祴浜嗕袱涓肩粰瀹? 榪欑瀹氫箟鏂規(guī)硶綾諱技浜嶤涓殑鏁扮粍, 浣嗕笌鏁扮粍涓嶅悓鐨勬槸, 姣忎釜鏁扮粍鍏冪礌涓嶉渶瑕佷負(fù)鐩稿悓綾誨瀷,灝卞儚鏈緥涓竴涓負(fù)鏁村瀷, 涓涓負(fù)瀛楃涓?
紼嬪簭絎簩閮ㄥ垎, 浠ュ瓧絎︿覆鍋氫負(fù)涓嬫爣, 鍙堝悜table鍐呭鍔犱簡涓涓厓绱? 榪欑table闈炲父鍍廠TL閲岄潰鐨刴ap. table涓嬫爣鍙互涓篖ua鎵鏀寔鐨勪換鎰忓熀鏈被鍨? 闄や簡nil鍊間互澶?
Lua瀵筎able鍗犵敤鍐呭瓨鐨勫鐞嗘槸鑷姩鐨? 濡備笅闈㈣繖孌典唬鐮?br />a = {}
a["x"] = 10
b = a -- `b' refers to the same table as `a'
print(b["x"]) --> 10
b["x"] = 20
print(a["x"]) --> 20
a = nil -- now only `b' still refers to the table
b = nil -- now there are no references left to the table
b鍜宎閮芥寚鍚戠浉鍚岀殑table, 鍙崰鐢ㄤ竴鍧楀唴瀛? 褰撴墽琛屽埌a = nil鏃? b浠嶇劧鎸囧悜table,
鑰屽綋鎵ц鍒癰=nil鏃? 鍥犱負(fù)娌℃湁鎸囧悜table鐨勫彉閲忎簡, 鎵浠ua浼?xì)鑷姩閲婃斁table鎵鍗犲唴瀛?/p>
3.Table鐨勫祵濂?/strong>
Table鐨勪嬌鐢ㄨ繕鍙互宓屽錛屽涓嬩緥
渚媏06.lua
-- Table ‘constructor’
myPolygon = {
color=“blue”,
thickness=2,
npoints=4;
{x=0, y=0},
{x=-10, y=0},
{x=-5, y=4},
{x=0, y=4}
}
-- Print the color
print(myPolygon[“color”])
-- Print it again using dot
-- notation
print(myPolygon.color)
-- The points are accessible
-- in myPolygon[1] to myPolygon[4]
-- Print the second point’s x
-- coordinate
print(myPolygon[2].x)
紼嬪簭璇存槑
棣栧厛寤虹珛涓涓猼able, 涓庝笂涓渚嬩笉鍚岀殑鏄紝鍦╰able鐨刢onstructor閲岄潰鏈墈x=0,y=0}, 榪欐槸浠涔堟剰鎬濆憿錛?榪欏叾瀹炲氨鏄竴涓皬table, 瀹氫箟鍦ㄤ簡澶able涔嬪唴, 灝弔able鐨則able鍚嶇渷鐣ヤ簡.鏈鍚庝竴琛宮yPolygon[2].x錛屽氨鏄ぇtable閲岄潰灝弔able鐨勮闂柟寮?