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("-------------------------------")
- 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.
- 71.
- 72.
- 73.
- 74.
- 75.
- 76.
- 77.
- 78.
- 79.
- 80.
- 81.
- 82.
- 83.
- 84.
- 85.
- 86.
- 87.
- 88.
- 89.
- 90.
- 91.
- 92.
- 93.
- 94.
- 95.
- 96.
- 97.
- 98.
- 99.
- 100.
- 101.
- 102.
- 103.
- 104.
- 105.
- 106.
- 107.
- 108.
- 109.
- 110.
- 111.
- 112.
- 113.
- 114.
- 115.
- 116.
- 117.
- 118.
- 119.
- 120.
- 121.
- 122.
- 123.
- 124.
- 125.
- 126.
- 127.
- 128.
- 129.
- 130.
- 131.
- 132.
- 133.
- 134.
- 135.
- 136.
- 137.
- 138.
- 139.
- 140.
- 141.
- 142.
- 143.
- 144.
- 145.
- 146.
- 147.
- 148.
- 149.
- 150.
- 151.
- 152.
- 153.
- 154.
- 155.
- 156.
- 157.
- 158.
- 159.
- 160.
- 161.
- 162.
- 163.
- 164.
- 165.
- 166.
- 167.
- 168.
- 169.
- 170.
- 171.
- 172.
- 173.
- 174.
- 175.
- 176.
- 177.
- 178.
- 179.
- 180.
- 181.
- 182.
- 183.
- 184.
- 185.
- 186.
- 187.
- 188.
- 189.
- 190.
- 191.
- 192.
- 193.
- 194.
- 195.
- 196.
- 197.
- 198.
- 199.
- 200.
- 201.
- 202.
- 203.
- 204.
- 205.
- 206.
- 207.
- 208.
- 209.
- 210.
- 211.
- 212.
- 213.
- 214.
- 215.
- 216.
- 217.
- 218.
- 219.
- 220.
- 221.
- 222.
- 223.
- 224.
- 225.
- 226.
- 227.
- 228.
- 229.
- 230.
- 231.
- 232.
- 233.
- 234.
- 235.
- 236.
- 237.
- 238.
- 239.
- 240.
- 241.
- 242.
- 243.
- 244.
- 245.
- 246.
- 247.
- 248.
- 249.
- 250.
小结:解析Lua脚本语言入门代码的内容介绍完了,希望通过本文的学习能对你有所帮助!