今天看了下lua的pdf。学习了一下lua。
对于表:看以下代码:
polyline = {
color = "blue", thickness = 2,
{ x = 0, y = 0 },
thicknesss = 10,
{ x = -10, y = 0 },
{ x = 0, y = 1 }
}
print( polyline[ 2 ].x );
print( polyline.color );
print( polyline.thicknesss )
代码是这样的,可运行结果出乎我的预料:
怎么也没想到print( polyline[ 2 ].x );输出的居然是-10.
原来,它会按照类型分一个是
假设 a = {
{ x = 0, y = 0 },
{ x = -10, y = 0 },
{ x = 0, y = 1 }
}
一个是
b = {
color = "blue", thickness = 2, thicknesss = 10,
}
如果你输出[x],则去a里面找,下标从1开始,(切记lua下标从1开始),如果是polyline.color或者polyline.thickness或者polyline.thicknesss则去b里面找!!!
for循环
for i = 10, 1, -1 do
print( i )
end
相当于
for( int i = 10, i <= 1; i-- ) {
sprintf( i );
}
赋值
a, b ,c = 1, 2, 3 等价于 a = 1; b = 2; c = 3
如果左边的数量小于右边的数量,则多余的会忽略,
如果左边的数量大于右边的数量,则依次赋值,没有的赋值为nil
如:
a , b, c = 1, 2
则 a = 1; b = 2; c = nil
a, b, c = 1, 2, 3, 4
则 a = 1; b = 2; c = 3; 4忽略
逻辑运算符 ( and or not )
a and b -- 如果a为false,则返回a,否则返回b
a or b -- 如果a为true,则返回a,否则返回b
看一个特殊的例子
C语言中的三元运算符
a ? b : c
在lua中可以这样实现
( a and b ) or c