美文网首页
三目运算符

三目运算符

作者: YellowFish | 来源:发表于2017-08-14 16:43 被阅读0次

(a and b) or c

local value = (a and b) or c
  • a 为条件语句 true或者false
  • 当a为true则把b赋给value,当a为false则把c赋给value

逻辑运算符跳转地址

↑如果逻辑运算符没弄清楚的先看如上地址

逻辑拆分

(a and b) or c
--以上逻辑可以拆分以下结果

假定 b c 不为nil

  • 当a=true
当a 是true 则(a and b) 返回b

然后 判断 b or c

b 和 c 都是要赋的值,理论上是不应该空的。

--如果b为true,则返回b,否则返回c

b or c => return b
  • 当a=false
当a是false

(a and b) => a

再判断 a or c

a又是false

--如果a为true,则返回a,否则返回c

a or c => return c

假如 b c都是nil

  • 当a=true
当a 是true 则(a and b) 返回b

然后 判断 b or c

b 和 c 都是nil => false

--如果b为true,则返回b,否则返回c
b or c => return c
  • 当a=false
当a是false

(a and b) => a

再判断 a or c

a又是false

--如果a为true,则返回a,否则返回c
a or c => return c

当b或者c为空的情况会有bug

如何避免?

可以自定义一个函数

function GetTernaryValue( ... )

    local bool = select(1, ...)

    local arg1 = select(2, ...)
    local arg2 = select(3, ...)

    if bool then
        return arg1
    else 
        return arg2     
    end

end

local value = GetTernaryValue(false,2,4)

print(value)

相关文章

  • 8.JavaScript-三目运算符

    1.什么是三目运算符? 三目运算符又称之为条件运算符 2.三目运算符格式 当条件为真(true)时,返回结果A当条...

  • 18_三目运算符和逗号表达式

    关键词:三目运算符、 三目运算符(a?b:c) 的返回类型、逗号表达式、一行代码实现strlen 1. 三目运算符...

  • Java入门:运算符

    Java运算符 运算符的运算对象成为操作数,根据操作数的个数把运算分为: 单目运算符 双目运算符 三目运算符 单目...

  • Python中的三目运算符的作用、语法、示例

    这篇文章介绍三目运算符的作用、语法、利用例子体验一下三目运算符。 三目运算符的作用: 化简代码量的,化简的是非常简...

  • 判断有无封面

    使用三目运算符

  • C++<第三篇>:运算符

    根据使用运算符的对象个数,将运算符分为单目运算符、双目运算符、三目运算符。根据使用运算符的对象之间的关系,C++ ...

  • JavaScript③

    函数 一:运算符和表达式 1.三目运算符(三元运算符) 表达...

  • java相关

    java运算符优先级 口诀:单目乘除位关系,逻辑三目后赋值 运算符描述单目运算+ –(负数) ++ -- 等乘除*...

  • C语言003 第三节课-学习运算符的优先级2019-06-26

    运算符的类型操作数的数目分单目运算、双目运算和三目运算; 按运算符的功能分类有算术运算符、赋值运算符、逗号运算符、...

  • Java 三目运算符(conditional operator?

    参考 伯乐在线 - 你真的会用 Java 中的三目运算符吗? 三目运算符的官方文档 Java_Chuck - JA...

网友评论

      本文标题:三目运算符

      本文链接:https://www.haomeiwen.com/subject/pnwurxtx.html