在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Lua是一种动态语言,在语言中没有类型定义的语法。
在lua中有8中基本的类型: 1.nil(空) 2.boolean 3.number(数字) 4.string(字符串) 5.userdata(自定义类型) 6.function(函数) 7.thread(线程) 8.table(表) 函数type可根据一个值返回类型的名称。 print(type("Hello world")) ------------->string 由于变量是没有预定义类型的,所以 a = 10; print(type(a)); --------------------->number a = print; ------------------------>注意这个是合法的 print(type(a)); ----------------------->function 这里我们重点来看下string类型。 Lua的字符串是不可变的值,如果修改只能创建一个新的字符串: a = "one"; b = string.gsub(a,"one","two"); print(a);-------------->one print(b);-------------->two Lua的字符串和其他Lua对象一样,都是采用自动内存管理机制所管理的对象。 另外还可以用一对匹配的双方括号来界定一个字母字符串,这样就可以延伸多行,但Lua不会解释其中的转义字符。 如: page = [[ <html> <head> </head> </html> ]] write(page); Lua提供了运行时数字和字符串自动转换。 print("20"+1); ------------------>21 print("Hello"+2);---------------->错误 相反,Lua也可以将字符串转换成一个数字 print(10 .. 20);------------------>1020 在Lua中 .. 表示字符串连接操作符。
接着我们来看看table类型, a = {};------------------->创建一个table,并引用到变量a中 for i=1,1000 do a[i] = i * 2 end; print(a[9];) -------------------->18 print(a["x"]);-------------------->nil
我们还可以将a["x"]写成a.x,但是注意a.x与a["x"]的区别。
长度操作符“#”用于返回一个数组或者线性表的最后一个索引,我们可以用他来干很多有意义的事情 遍历table: for i=1,#a do print(a[i]); end 删除最后一个元素: a[#a] = nil;
末尾添加元素: a[#a+1] = v;
当一个数组中间有空隙也就是说有元素是nil,那么#就认为这个空元素是数组结束的标志。
如果真的需要处理那些有空隙的数组,那么就需要用到函数table.maxn,它将放回数组的最大索引的元素。
a = {}; a[10000] = 1; print(table.maxn(a)); ---------------->10000
接下来我们来看下Lua里面的function函数: lua语言中的函数可以存储在变量中,可以通过参数来传递给其他函数,好可以作为其他函数的返回值。
Lua既可以调用自身的函数,也可以调用c语言的函数。
userdata和thread
userdata用于表示一种由应用程序或者c语言库所创建的新类型。
|
请发表评论