lua基础3

1.逻辑运算符
and, or , not
and:只有第一个参数为false,返回第一个参数;第一个参数为真,返回第二个参数。
or:只有第一个参数为true,返回第一个参数;否则,返回第二个参数。

--if not x then x=v end
x=x or v

上述表达式:如果x为false,则x被赋值为v。

a and b or c
--类似于c语言中的a?b : c
max = (x>y) and x or y

not运算符返回true或者false。

print(not nil) -->true
print(not false) -->true
print(not 0) -->false
print(not not nil) -->false

2.字符串拼接
使用两个点"…"进行字符串拼接。

a = "Hello"
print(a.." World")  -->Hello World
print(a)           -->Hello

3.运算符优先级
所有二目运算符都是左关联,除了指数运算符以及字符串连接符是右关联。

a+i  <  b/2+1   <--->  (a+i) < ((b/2)+1)
5+x^2*8         <--->   5+((x^2)*8)
a < y  and y<=z <--->  (a<y) and (y<=z)
-x^2            <--->   -(x^2)
x^y^z           <--->    x^(y^z)

4.表创建

--简单表的创建
days = {"Sunday", "Monday", "Tuesday",
"Wednesday", "Thursday", "Friday", "Saturday"}
print(days[4])  -->Wednesday

也可以这样:

a={x=0,y=0}
--也可以写成这样
a={}; a.x=0;a.y=0

观察下面的这个例子:

w= {x=0,y=0,label="console"}
x = {sin(0),sin(1),sin(2)} 
w[1]= "another field"
x.f= w
print(w["x"]) -->0
print(w[1])   -->another field
print(x.f[1]) -->another field
w.x = nil     --> remove field "x"

使用table创建一个连接list:

list = nil 
for line in io.lines() do 
	list = {next=list, value=line}
end

由于我们的list类似栈,因此下列程序将会逆序打印:

l = list 
while l do 
	print(l.value)
	l = l.next
end

更为复杂的表结构:

polyline = {color="blue", thickness=2, npoints=4, 
{x=0, y=0},
{x=-10, y=0},
{x=-10,y=1},
{x=0, y=1}
}
print(polyline[2].x)  -->-10
--其中polyline[1],polyline[2] is a table representing a record.

表结构:

{x=0,y=0}
-- is equivalent to 
{["x"]=0, ["y"]=0}
---
{"red", "green", "blue"} 
--is equivalent to 
{[1]="red", [2]="green", [3]="blue"}

结尾加上一个逗号是合法的,如下所示:

a = {[1]="red", [2]="green",}

也可以使用分号代替逗号,如下:

{x=10,y=45;"one","two","three"}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值