| 脚本语法说明—类型与值 |
概述
● UL是动态类型语言,变量不要类型定义。
Eg:
a = 10
a = "a string!!"
● UL中有6种基础类型:nil、boolean、number、string、function、table。
nil :
备注:Lua中特殊的类型,他只有一个值:nil;一个全局变量没有被赋值以前默认值为nil;给全局变量赋nil可以删除该变量。
boolean :两个取值false和true。
备注:UL中所有的值都可以作为条件。 在控制结构的条件中除了false和nil为假,其他值都为真。所以UL认为0和空串都是真。
number
备注:UL中没有整数,也就是说UL是不区分实数和整数的,认为所有的数都是实数,不需要特意的说明数字的类型。
string
备注:UL字符串中的字符可以具有任何数值编码,包括数值0,可以将任意二进制数据存储到一个字符串中。
Eg:
a = “a line”
b = ‘another line’
备注:UL中定义字符串不用考虑字符串的长度,需要注意的是UL中既可以用单引号表示字符串,又可以用双引号表示字符串。我们统一规定用半角的双引号,如果字符串本身带有双引号,必须使用全角的双引号,否则会出错。
function
备注:函数可以存储在变量中,可以作为函数的参数,也可以作为函数的返回值。详见“函数”章节。
table
备注:table是UL中唯一的数据结构。table类型实现了“关联数组”,不仅可以通过整数来索引它,还可以使用字符串或其他类型的值(除了nil)来索引它。table的创建是通过构造表达式完成的,最简单的构造表达式就是{}。
Eg:
对于a = {6}
a.x = 10 --等同于a[“x” = 10]
uPrintf = (a.x) --等同于uPrintf(a[“x”])
uPrintf(a.y) --等同于uPrintf(a[“y”])
uPrintf(a[1]) --结果为6
UL对于诸如a[“name”]的写法提供了更简便的写法,可直接输入a.name。
备注:要注意a.x和a[x]的区分。前者表示a[“x”],表示以字符串”x”来索引table;后者是以变量x的值来索引table。
● 转义符:
如果字符串本身包含引号,可以使用另一种引号来界定字面字符串,或使用反斜杠对引号进行转义。
UL字符串中的常用转义序列

● string和number的转换:
在UL中,string和number是可以自动转换的
Eg1:
uPrintf(“10” + 1) --[[“10”+1系统判断应该进行number运算,自动把”10”转换为number,这样运算结果为11.--]]
Eg2:
uPrintf(10 .. 20) --[[10..20系统判断应进行string运算,自动把10、20转换为string,这样运算的结果就是1020了--]]
Eg3:
10~= “10” --[[当用于判断的时候,string和number不是自动转换的,因此数字10不等于字符串10]]
此外还可进行强制转换:相关函数为uTonumber和uTostring。
Eg1:
a = “10”
b = uTonumber (a) --将字符串”10”转换为数字10
uPrintf(utype(a)) -- > number
Eg2:
a = 10
b = uTostring (a) --将数字10转换为字符串”10”
uPrintf(utype(b)) -- >string