加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

lua中逻辑运算符and与or的用法

发布时间:2020-12-14 22:05:26 所属栏目:大数据 来源:网络整理
导读:总的来说就是,and返回导致返回值为false的那个值。a and? b,如果a为假就返回a,否则返回b。?? or的用法就是返回导致true的那个,? a and b,如果a为真就返回a,否则返回B. 逻辑运算符认为false和nil是假(false),其他为真,0也是true. and的优先级比or高

总的来说就是,and返回导致返回值为false的那个值。a and? b,如果a为假就返回a,否则返回b。?? or的用法就是返回导致true的那个,? a and b,如果a为真就返回a,否则返回B.

逻辑运算符认为false和nil是假(false),其他为真,0也是true.
and的优先级比or高
其它语言中的and表示两者都为真的时候,才返回为真,而只要有一个假,都返回假.lua虽不仅返回假的语义,还返回导致假的值.也就是说
a and b
在a为false的时候,返回a,否则返回b.
or的处理与之类似,
a or b
在a为true的时候,否则返回b.
总之,and与or返回的不仅有true/false的语义,还返回了它的值.

[cpp] view plain copy print ?

  1. a?=?nil??
  2. b?=?1??
  3. exp?=?1?<?2?and?a?or?b??
  4. print(exp?==?a)?--fales??
  5. exp?=?1?>?2?and?a?or?b??
  6. print(exp?==?b)?--true??
  7. exp?=?(1?<?2?and?{a}?or?{b})[1]??
  8. print(exp?==?a)?--true??
  9. exp?=?(1?>?2?and?{a}?or?{b})[1]??
  10. print(exp?==?b)?--true??

false true true true 不过正确的方案书写太过复杂,反而弄巧成拙。lua中没有提供语言内置的支持,还是转向正常的if/else吧。 当然,如果编码者能够断言c and a or b中的a一定为真,那直接用这种写法也不会错,但这就是一个hack了,不值得推崇。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读