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脚本语言入门代码的内容介绍完了,希望通过本文的学习能对你有所帮助!