lua: 运算符易错点: and or 连接符'..'

来源:互联网 发布:17网广州网络批发市场 编辑:程序博客网 时间:2024/06/01 09:25

在C++中,&&表示并且,||表示或.
而在lua中用 and表示且, or表示或.然而还是有一些小伙伴搞不清楚lua中的用法…我将在下面进行举例说明,看完例子,你基本完全懂了..
首先,你必须要知道:
在lua中,只有false和nil是false,其他一切都是true的.包括0,NULL都是true…

1.and示例:

--直接输出.print((5>3 and 5)); --结果为5.因为左边是true的,所以判断整体是否为true,就还要看右边,所以输出的是右边的值.--print((5<3 and 8)); --结果为false,因为左边明显是false,则整体一定为false了,所以就忽略右边了,也就是C++中的短路原则,貌似是这么叫的把...所以直接输出左边的值.

2.or示例:

--直接输出.print(5>3 or 5); --结果为true,因为左边是true,所以不用看右边了,直接输出左边的值.print(5<3 or 8); --结果为8,因为左边是false,所以光看左边是无法得知整个式子的值的,所以直接输出右边.

…发现之前的示例都没放nil,所以再来两个..

print(nil and 10);  --左边为nil,也就是false,所以不用看右边,直接输出nil.//print(nil or 20); --左边是nil,也就是false,所以要看右边,所以直接输出20.
  1. ‘..’运算符
    当我们使用C++的STL的string字符串时,由于库中的string类自己重载了’+’运算符,所以我们都用的随心所欲的,十分的方便,但是在lua中,是不能直接这样做的,所以lua提供了’..’连接运算符,用两个点来连接两个字符串,接下来看示例:
--发现自己加分号的习惯改不了了,怎么办....--这样是错误的...print("hello "+"world"); --错误.--用'..'来连接两个字符串.print("hello ".."world"); -- 输出 hello world

当然也可以这样使用,看起来看明显一点.

a = "你好,"--用连接符,把新的字符串连接到a上,然后把值赋给a.a = a.." 世界!"print(a); --输出结果 你好,世界!

4.’..’运算符也可以在数字之间使用..

a = 5;--输出原类型为numberprint(type(a));--把6加到5的后面a = 5 ..6print(a); --输出结果为56print(type(a)); --输出类型为string