解析Lua腳本語言入門代碼
作者:佚名 
  Lua腳本語言入門代碼是本文要介紹的內(nèi)容,主要是來學(xué)習(xí)Lua腳本語言,具體內(nèi)容來看本文通過代碼如何來講解Lua腳本語言。
 Lua腳本語言入門代碼是本文要介紹的內(nèi)容,主要是來學(xué)習(xí)Lua腳本語言。近來游戲基本做的差不多了,大約5月底左右可以內(nèi)測?現(xiàn)在正在快馬加鞭增強其腳本功能。考慮到效率和庫大小,功能等原因,暫決定使用<魔獸世界>采用的Lua語言進行嵌入支持.我可愛的Python和Ruby沒被采用,怨念啊...下面是學(xué)習(xí)的一些代碼,均在LuaEdit5.0上運行通過.
- --> 實驗類型
 - print( type("HelloWorld") );
 - print( type(10.4 * 3) );
 - print( type(print) );
 - print( type(type) );
 - print( type(true) );
 - print( type(nil) );
 - print( type(type(x)) );
 - print("-------------------------------")
 - --> 實現(xiàn)同一變量對應(yīng)多種類型
 - print( type(a) )
 - a = 10
 - print( type(a) )
 - a = "a string!!"
 - print( type(a) )
 - a = print
 - a( type(a) )
 - print("-------------------------------")
 - --> 實現(xiàn)字符串部分替代保存和部分特殊轉(zhuǎn)義符
 - a = "My game is \n\"\'so\bso good" ;
 - b = string.gsub( a, "ga", "ha" );
 - print( a );
 - print( b );
 - print("-------------------------------")
 - --> 實現(xiàn)Asc碼和字符之間的替換表示
 - print("\097\102a") ;
 - print("100" + 2 * "5" ) ;
 - print("-------------------------------")
 - --> 用于測試字符串鏈接,數(shù)字自動轉(zhuǎn)換字符串
 - print("Hello".."World");
 - sString = [[
 - 你好,現(xiàn)在是在測試大段的String類型,
 - 將使用這兩個符號進行表示
 - 測試希望能夠順利結(jié)束.
 - ]];
 - print( sString );
 - print( 10 .. 20 );
 - line = 100
 - n = tonumber(line)
 - if ( n == nil )
 - then error("您輸入的值" .. line .. "無法正常轉(zhuǎn)換為浮點數(shù)!")
 - else print( n^2 )
 - end
 - print( 10 == "10" )
 - print( tostring(10) == "10" )
 - print("-------------------------------")
 - --> 不等于符是 ~= 不再是 !=
 - if( a ~= nil )
 - then print(a)
 - else print(" a為空 ")
 - end
 - print("-------------------------------")
 - --> == 號是進行兩個變量的地址進行比較,所以2例中的a和c是不相等的
 - a = 1;
 - b = a;
 - c = 1;
 - if( a == b )
 - then print( "a=b" )
 - else print( "a~=b" )
 - end
 - if( a == c )
 - then print( "a=c" )
 - else print( "a~=c" )
 - end
 - a = {};
 - a.x = 1;
 - a.y = 2;
 - b = {};
 - b = a;
 - c = {};
 - c.x = 1;
 - c.y = 2;
 - if( a == b )
 - then print( "a=b" )
 - else print( "a~=b" )
 - end
 - if( a == c )
 - then print( "a=c" )
 - else print( "a~=c" )
 - end
 - print("-------------------------------")
 - print( 2 < 5 )
 - --> print( a < b ) --> Lua不會自動將char轉(zhuǎn)換為int
 - --> print( a < 1 )
 - print( "2" + 1 < 2 )
 - --> print( "3" < 2 ) --> 不合法
 - print( "3" > "2" ) --> 合法
 - print("-------------------------------")
 - --[[
 - * 邏輯運算符認為false和nil是假,0和其他一切都為true
 - * and 和 or 的預(yù)算結(jié)果不再是true或false,Lua中,它類似于一個三元運算符
 - * a and b 若a為false,則返回a,否則返回b
 - * a or b 若a為true,則返回a,否則返回b
 - --]]
 - print( 4 and 5 )
 - print( nil and 13 )
 - print( false and 13 )
 - print( 4 or 5 )
 - print( false or 5 )
 - --[[
 - * 實用技巧: 若a為空值則將b賦給a
 - * aa = a or b
 - * 另外,and 的優(yōu)先級比 or 高.
 - * not 的結(jié)果只有true或false
 - --]]
 - print( not 0 ) --> 注意,0也是true
 - print( not false )
 - print( not nil )
 - print( not true )
 - print( not hahahaha ) --> hahahaha變量未賦值,認為是nil
 - print( not not true )
 - a = "hahahaha"
 - print( not not a )
 - if( a == "hahahaha" )
 - then print(" a還是\"hahahaha\" ");
 - else print(" a已經(jīng)是true ");
 - end
 - print("-------------------------------")
 - --> 表的使用
 - a = { 1, 3, 6, 0 }
 - print( a[2] ); --> 注意,結(jié)果是3,說明Lua表索引是以1開始的,不是C/C++一樣以0開始
 - print("-------------------------------")
 - --> 表是動態(tài)的,允許順時進行修改
 - w = { x = 0, y = 0, label = "呵呵" }
 - x = {}
 - w[1] = "嘿嘿"
 - x.f = w
 - print(w[1])
 - print(x[1])
 - print(x.f[1])
 - print("-------------------------------")
 - --> function函數(shù)
 - function Fun( a, b )
 - local c = a^2 + b^2 ;
 - return math.sqrt(c)
 - end
 - print( Fun( 3, 4 )) ;
 - print("-------------------------------")
 - --> Loops循環(huán),從第一個參數(shù)到第二個參數(shù),第三個參數(shù)是步長,中間以逗號分割
 - for i = 1,5,2
 - do print("現(xiàn)在的I值是" .. i )
 - end
 - print("-------------------------------")
 - --> Loops循環(huán)+Conditionals條件
 - for i = 1,6
 - do if i < 3
 - then print("數(shù)字很小")
 - elseif i < 5
 - then print("數(shù)字一般")
 - else print("數(shù)字比較大")
 - end
 - end
 - --[[
 - * Lua不近然ObjectPascal,沒必要每個begin對應(yīng)一個end
 - * 即使多個if,也是一個end就足夠
 - --]]
 - print("-------------------------------")
 - myData = { 2 }
 - myData[0] = "111"
 - myData["yumen"] = "duzhi"
 - for key,value in myData
 - do print( key .. "=" .. value )
 - end
 - --[[
 - * Lua允許以字符串做為下標(biāo),這點十分類似STL中的map映射
 - *
 - --]]
 - print("-------------------------------")
 - --> 嵌套Table 以及 兩種訪問模式
 - myTable = { color = "blue", sex = 1, x = 0;
 - { x = 1, y = 2 }, { x = 2, y = 3 } ,
 - { x = 3, y = 4 }, { x = 4, y = 5 }
 - }
 - print( myTable.color );
 - print( myTable["color"]) ;
 - print( myTable[1].x );
 - print("-------------------------------")
 - --> 支持不定參數(shù)
 - function Fun( ... )
 - for i = 1, arg.n
 - do print( arg[i] )
 - end
 - end
 - Fun("1", "2", dhsag, 1, nil, true )
 - --[[
 - * 傳來的參數(shù)自動的存放在了一個名為 arg 的Table中了
 - * 其中arg.n就是arg中存放參數(shù)的個數(shù)
 - --]]
 - print("-------------------------------")
 - --> 以table表做參數(shù)
 - function Fun( t )
 - for k,v in t
 - do print( k .. "=" .. v )
 - end
 - end
 - Fun({ x = 10, y = 20 });
 - Fun{ x = 10, y = 20 };
 - --[[
 - * 雖然僅僅是調(diào)用單個Table做為參數(shù)
 - * 調(diào)用處不加小括號也可以,但是不支持這種寫法.可讀性低.
 - --]]
 - print("-------------------------------")
 
小結(jié):解析Lua腳本語言入門代碼的內(nèi)容介紹完了,希望通過本文的學(xué)習(xí)能對你有所幫助!
責(zé)任編輯:zhaolei 
                    來源:
                    互聯(lián)網(wǎng)
 














 
 
 
 
 
 
 