Lua基础之运算符

来源:互联网 发布:七大查找算法 编辑:程序博客网 时间:2024/06/05 15:11

Lua 运算符

运算符是一个特殊的符号,用于告诉解释器执行特定的数学或逻辑运算。Lua提供了以下几种运算符类型:

· 算术运算符

· 关系运算符

· 逻辑运算符

· 其他运算符

算术运算符

Lua支持常规的算术操作符有:”+”(加法),”-”(减法),”*”(乘法),”/”(除法),”^”(指数),”%”(取模),一元的”-”(负号)。所有的这些操作符都用于实数。例如:x^0.5将计算x的平方根,x^3将计算x的3次方。

实例

我们可以通过以下实例来更加透彻的理解算术运算符的应用:

a = 21

b = 10

c = a + b

print("Line 1 - c 的值为 ", c )

c = a - b

print("Line 2 - c 的值为 ", c )

c = a * b

print("Line 3 - c 的值为 ", c )

c = a / b

print("Line 4 - c 的值为 ", c )

c = a % b

print("Line 5 - c 的值为 ", c )

c = a^2

print("Line 6 - c 的值为 ", c )

c = -a

print("Line 7 - c 的值为 ", c )

关系运算符

下表列出了 Lua 语言中的常用关系运算符,设定 A 的值为10,B 的值为 20:

Lua提供的关系操作符有:”<”,”>”,”<=”,”>=”,”==”,”~=”;所有这些操作符的运算结果都是true或false。

操作符==用于相等性测试,操作符~=用于不等性测试。这两个操作符可以应用于任意两个值。如果两个值具有不同的类型,Lua就认为它们是不相等的;特别需要说明的是,nil只与其自身相等。

对于table、userdata和函数,Lua是作引用比较的。也就是说,只有当它们引用同一个对象时,才认为它们相等。

实例

我们可以通过以下实例来更加透彻的理解关系运算符的应用:

a = 21

b = 10

if( a == b )then

   print("Line 1 - a 等于 b" )else

   print("Line 1 - a 不等于 b" )end

if( a ~= b )then

   print("Line 2 - a 不等于 b" )else

   print("Line 2 - a 等于 b" )end

if ( a < b )then

   print("Line 3 - a 小于 b" )else

   print("Line 3 - a 大于等于 b" )end

if ( a > b ) then

   print("Line 4 - a 大于 b" )else

   print("Line 5 - a 小于等于 b" )end

-- 修改 a 和 b 的值

a = 5

b = 20if ( a <= b ) then

   print("Line 5 - a 小于等于  b" )end

if ( b >= a ) then

   print("Line 6 - b 大于等于 a" )end

逻辑运算符

Lua提供的逻辑操作符有and、or和not。与条件控制语句一样,所有的逻辑操作符将false和nil视为假,而将其它的任何东西视为真。对于操作符and来说,如果它的第一个操作数为假,就返回第一个操作数;不然就返回第二个操作数。对于操作符or来说,如果它的第一个操作数为真,就返回第一个操作数;不然就返回第二个操作数。这里和C++等语言是存在区别的,Lua的逻辑操作符并不是简单的返回true或false,而是返回操作数的值。例如以下代码:

print(4 and 5)               -->5

print(nil and 13)          -->nil

print(false and 13)     -->false

print(4 or 5)               -->4

print(false or 5)          -->5

实例

我们可以通过以下实例来更加透彻的理解逻辑运算符的应用:

a = true

b = true

if ( a and b )then

   print("a and b - 条件为 true" )end

if ( a or b )then

   print("a or b - 条件为 true" )end

print("---------分割线---------" )

-- 修改 a 和 b 的值

a = false

b = true

if ( a and b )then

   print("a and b - 条件为 true" )else

   print("a and b - 条件为 false" )end

if ( not( a and b) )then

   print("not( a and b) - 条件为 true" )else

   print("not( a and b) - 条件为 false" )end

and和or都使用“短路求值”,也就是说,它们只会在需要时才去评估第二个操作数。

其他运算符

要在Lua中连接两个字符串,可以使用操作符“..”(两个点)。如果其任意一个操作数是数字的话,Lua会将这个数字转换成一个字符串。在Lua中,字符串是不可变的值,连接操作符只会创建一个新字符串,而不会对其原操作数进行任何修改。

a..b ,其中 a 为 "Hello " , b 为 "World", 输出结果为 "Hello World"。

# 一元运算符,返回字符串或表的长度。#"Hello" 返回 5

原创粉丝点击