Lua脚本语言入门代码是本文要介绍的内容,主要是来学习Lua脚本语言。近来游戏基本做的差不多了,大约5月底左右可以内测?现在正在快马加鞭增强其脚本功能。考虑到效率和库大小,功能等原因,暂决定使用<魔兽世界>采用的Lua语言进行嵌入支持.我可爱的Python和Ruby没被采用,怨念啊...下面是学习的一些代码,均在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("-------------------------------")
- --> 实现同一变量对应多种类型
- print( type(a) )
- a = 10
- print( type(a) )
- a = "a string!!"
- print( type(a) )
- a = print
- a( type(a) )
- print("-------------------------------")
- --> 实现字符串部分替代保存和部分特殊转义符
- a = "My game is \n\"\'so\bso good" ;
- b = string.gsub( a, "ga", "ha" );
- print( a );
- print( b );
- print("-------------------------------")
- --> 实现Asc码和字符之间的替换表示
- print("\097\102a") ;
- print("100" + 2 * "5" ) ;
- print("-------------------------------")
- --> 用于测试字符串链接,数字自动转换字符串
- print("Hello".."World");
- sString = [[
- 你好,现在是在测试大段的String类型,
- 将使用这两个符号进行表示
- 测试希望能够顺利结束.
- ]];
- print( sString );
- print( 10 .. 20 );
- line = 100
- n = tonumber(line)
- if ( n == nil )
- then error("您输入的值" .. line .. "无法正常转换为浮点数!")
- 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转换为int
- --> print( a < 1 )
- print( "2" + 1 < 2 )
- --> print( "3" < 2 ) --> 不合法
- print( "3" > "2" ) --> 合法
- print("-------------------------------")
- --[[
- * 逻辑运算符认为false和nil是假,0和其他一切都为true
- * and 和 or 的预算结果不再是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 的优先级比 or 高.
- * not 的结果只有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已经是true ");
- end
- print("-------------------------------")
- --> 表的使用
- a = { 1, 3, 6, 0 }
- print( a[2] ); --> 注意,结果是3,说明Lua表索引是以1开始的,不是C/C++一样以0开始
- print("-------------------------------")
- --> 表是动态的,允许顺时进行修改
- w = { x = 0, y = 0, label = "呵呵" }
- x = {}
- w[1] = "嘿嘿"
- x.f = w
- print(w[1])
- print(x[1])
- print(x.f[1])
- print("-------------------------------")
- --> function函数
- function Fun( a, b )
- local c = a^2 + b^2 ;
- return math.sqrt(c)
- end
- print( Fun( 3, 4 )) ;
- print("-------------------------------")
- --> Loops循环,从第一个参数到第二个参数,第三个参数是步长,中间以逗号分割
- for i = 1,5,2
- do print("现在的I值是" .. i )
- end
- print("-------------------------------")
- --> Loops循环+Conditionals条件
- for i = 1,6
- do if i < 3
- then print("数字很小")
- elseif i < 5
- then print("数字一般")
- else print("数字比较大")
- end
- end
- --[[
- * Lua不近然ObjectPascal,没必要每个begin对应一个end
- * 即使多个if,也是一个end就足够
- --]]
- print("-------------------------------")
- myData = { 2 }
- myData[0] = "111"
- myData["yumen"] = "duzhi"
- for key,value in myData
- do print( key .. "=" .. value )
- end
- --[[
- * Lua允许以字符串做为下标,这点十分类似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("-------------------------------")
- --> 支持不定参数
- function Fun( ... )
- for i = 1, arg.n
- do print( arg[i] )
- end
- end
- Fun("1", "2", dhsag, 1, nil, true )
- --[[
- * 传来的参数自动的存放在了一个名为 arg 的Table中了
- * 其中arg.n就是arg中存放参数的个数
- --]]
- print("-------------------------------")
- --> 以table表做参数
- function Fun( t )
- for k,v in t
- do print( k .. "=" .. v )
- end
- end
- Fun({ x = 10, y = 20 });
- Fun{ x = 10, y = 20 };
- --[[
- * 虽然仅仅是调用单个Table做为参数
- * 调用处不加小括号也可以,但是不支持这种写法.可读性低.
- --]]
- print("-------------------------------")
小结:解析Lua脚本语言入门代码的内容介绍完了,希望通过本文的学习能对你有所帮助!