• lua学习之表达式


    • 算数运算符
      一元运算符:-(负值)
      二元运算符:+ - * / ^ (加减乘除幂)

    • 关系运算符
      <    >    <=    >=    ==    ~=(相当于!=)

      这些操作符返回结果为false或者true; ==和~=比较两个值,如果两个值得类型不同,lua也认为两者不同;
      lua通过引用比较tables、userdata、functions,当且仅当两者表示同一个对象时相等

      a = {}; a.x = 1; a.y = 0
      b = {}; b.x = 1; b.y = 0
      c = a
      a==c but a~=b

      lua比较字符按字母的顺序进行,但是字母顺序依赖本地环境。混合比较数字和字符串会报错(如:2 < "1"

    • 逻辑运算符
      and    or    not

      逻辑运算符认为false和nil是假,其他为真,0也是真
      >and 和 or的运算结果不是true和false,而是和它两个操作数相关

      a and b  -- 如果 a 为 false,则返回 a,否则返回 b
      a or b -- 如果 a 为 true,则返回 a,否则返回 b

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

      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
      -- 如果 x 为 false 或者 nil 则给 x 赋初始值 v(创建类时常用)
      x = x or v
      -- 等价于
      if not x then
      x = v
      end

      >and的优先级比or高

      a ? b : c     等价于    (a and b) or c

      >not的结果只返回false或者true

      print(not nil)  --> true
      print(not false) --> true
      print(not 0) --> false
      print(not not nil)  --> false
    • 连接运算符
      ..    -- 两个点

      >字符串连接,如果操作数为数字,Lua 将数字转成字符串

      print("Hello " .. "World") --> Hello World
      print(0 .. 1) --> 01
    • 优先级
      -- 高到低
      ^
      not - (unary)
      *  /
      +  -
      ..
      <  >  <= >= ~= ==
      and
      or
  • 相关阅读:
    CSS3中background-origin和background-clip的区别
    JavaScript的赋值是引用or复制,及参数传递
    写第一个jquery插件实录
    北大acm1008
    北大acm1007
    北大acm1006
    北大acm1005
    北大acm1004
    团队绩效评估
    第二阶段冲刺第十天
  • 原文地址:https://www.cnblogs.com/jierism/p/6432438.html
Copyright © 2020-2023  润新知