Lua程序设计 表达式

        表达式用于表示值。Lua的表达式中能够包含数字常量、字面字符串、变量、一元和二元操做符及函数调用。区别于以往的,Lua的表达式中能够包括函数定义和table构造式。函数

        算术操做符lua

        Lua支持常规的算术操做符有:二元的加(“+”)、减(“-”)、乘(“*”)、除(“/”)、指数(“^”)、取模(“%”);一元的负号(-),全部的这些操做均可用于实数。spa

其中取模操做符根据如下规则定义:a % b == a - floor(a / b) * b。code

        对于整数来讲,以上算式的计算结果的符号永远与第二个参数相同。对象

        对于实数来讲,x % 1 = x 的小数部分;x - x %1 = x 的整数部分;相似地,x - x%0.01精确到小数点后两位的结果。字符串

x = math.pi
print(x - x%0.01)  ------->3.14

        关系操做符table

         Lua提供了: <     >     <=     >=    ==   ~= 这些关系操做符。全部这些操做符的运算结果都是true或false。若是两个值具备不一样的类型,Lua就认为他们是不相等的。不然,Lua会根据他们的类型来比较二者。这里nil只与其自身相等。class

        对于Table、userdata和函数,只有当他们引用同一个对象时,才认为他们相等。变量

a = {} 
a.x = 1
a.y = 0


b = {}
b.x = 1
b.y = 0



c = a
结果:a == c, a ~= b

         Lua中只能对两个数字或两个字符串做大小性的比较。Lua按照字母次序比较字符串,具体的字母次序取决于对Lua的区域设置。数字和字符串以外的其余类型只能进行相等或者不等性的比较。引用

         逻辑操做符

         逻辑操做符有and,or 和 not。与条件控制语句同样,全部的逻辑操做符将false和nil视为假,而将其余的任何东西视为真。

         对于and来讲,若是它的第一个操做数为假,就返回第一个操做数;否则返回第二个操做数。

   and是哪一个为假就返回哪个,若是两个都为假就返回第一个假的。若是两个都为真就返回最后一个真的。

         对于or来讲,若是它的第一个操做数为真,就返回第一个操做符;否则返回第二个操做数。

   or是哪一个为真就返回哪个,若是两个都为真就返回第一个真的,若是两个都为假就返回最后一个假的。

         and 和 or 都使用”短路求值“,只会在须要时才去评估第二个操做数。能够确保("type(v) == "table"  and  v.tag == "h1"")

         经常使用的Lua习惯写法

  "x = x or v"
  等于
  if not x then x = v end

      字符串链接

       Lua中接两个字符串,可使用操做符“..”,若是其任意一个操做数是数字的话,Lua会将这个数字转换成一个字符串。

       Lua中的字符串是不可变的值。链接操做符只会建立一个新的字符串,而不会对其原操做数进行任何修改。

a = "hello"
print(a .. "world")   --- >helloWorld
print(a)              ----> hello

      优先级

      Lua 操做符的优先级:

^
not  #  -(一元)
*    /    %
+     -
..
<    >    <=   >=    ~=   ==
and
or

     二元操做中,除了指数操做符和连接操做符是“右结合”,全部其余操做符都是“左结合”

相关文章
相关标签/搜索