zoukankan      html  css  js  c++  java
  • lua --- 逻辑运算符小结

    lua中的逻辑运算符,认为只有false、nil为假,其他的都为真(包括0、空串)

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

    1 print(4 and 5)           --5
    2 print(nil and 12)        --nil
    3 print(false and 13)      --false
    4 print(4 or 5)            --4
    5 print(false or 5)        --5

    一个很实用的技巧:如果x为false或者nil则给x赋初始值v

    x = x or v

    等价于

    if not x then
        x = v
    end

    C语言中的三元运算符

    a ? b : c

    在Lua中可以这样实现(《Programming in Lua》):

    (a and b) or c

    这样的实现其实有些问题,就是当 b 为 fasle 或者 nil 的时候,无论 a 为 true 还是 false ,运算结果都是返回的 c、

    所以,正确的实现方式如下:

    (a and {b} or {c})[1] 

    解释一下,{b} 、{c} 必然不会是 false 或者 nil。a 为 true ,返回 {b}, a为 false ,返回 {c},所以,表达式的返回结果必然是一个table,且这个table中只要一个元素,通过下标 1 直接访问即可。

  • 相关阅读:
    node中fs模块
    node生成excel,动态替换表格内容
    Postgresql存放数组形式的数据
    ubuntu下安装typescript
    随笔6
    excel文件导出相应数据统计内容
    随笔4
    随笔3.2
    随笔2
    随笔1
  • 原文地址:https://www.cnblogs.com/luguoshuai/p/10051820.html
Copyright © 2011-2022 走看看