美文网首页
Lua中and与or

Lua中and与or

作者: 行业碧油鸡 | 来源:发表于2018-01-27 17:58 被阅读2089次
Lua中的逻辑运算符:与(and)、或(or)和非(not),与其他语言的逻辑运算符功能一致。但Lua中所有的逻辑运算符将false和nil视为假,其他任何东西视为真,0也视为真。
当连接2个操作数时:
  1. 对于运算符and来说,如果它的第一个操作数为假,就返回第一个操作数;不然返回第二个操作数;
print('a' and {1,2,3})  
print(0 and 'b')  
print(nil and 233)  
print(233 and nil)  
print(false and 'abcdfg')
print('abcdfg' and false)

output:
table: 0x8d4eb0
b
nil
nil
false
false
  1. 对于运算符or来说,如果它的第一个操作数为真,就返回第一个操作数,不然返回第二个操作数;
print('a' or {1,2,3})  
print(0 or 'b')  
print(nil or 233)  
print(233 or nil)
print(false or 'abcdfg')
print('abcdfg' or false)

output:
a
0
233
233
abcdfg
abcdfg
  1. and连接多个操作数时,表达式的返回值就是从左到右第一个为假的值,若所有操作数值都不为假,则表达式的返回值为最后一个操作数;
print('a' and 'b' and 'c' and 'd' and nil and false and 'e' and 'f')    
print('a' and 'b' and 'c' and false and 'd' and nil and 'e' and 'f') 

output:
nil
false
  1. or连接多个操作数时,表达式的返回值就是从左到右第一个不为假的值,若所有操作数值都为假,则表达式的返回值为最后一个操作数;
print(nil or 'a' or 'b' or 'c' or 'd'   or false or 'e' or 'f')    
print('a' or nil or 'b' or 'c' or false or 'd'   or 'e' or 'f')
print('a' or 'b' or nil or 'c' or false or 'd'   or 'e' or 'f') 

output:
a
a
a

  1. Lua中还会用到 "a and b or c ",这类似于C系语言中的表达式 a ? b : c: max = (a > b) and a or b
local a = 666
local b = 333
local c = true
print((a > b) and a or b)
print((a < b) and a or b)
print((not c) and 'false' or 'true')

output:
666
333
true

相关文章

  • 2019-01-14

    Lua与C交互学习笔记 Lua与C交互是通过虚拟栈实现的 在C中调用Lua 方法一 栈中的情况如下表所示 方法二 ...

  • Lua中and与or

    Lua中的逻辑运算符:与(and)、或(or)和非(not),与其他语言的逻辑运算符功能一致。但Lua中所有的逻辑...

  • Lua与C交互-访问Lua变量(原创)

    1、交互原理 一个Lua程序与C的交互都是通过Lua虚拟机中的一个堆栈进行的,通过调用Lua C API可以让C中...

  • Lua与C交互简介

    Lua资源获取### Lua各个平台动态库与静态库下载地址Lua源码下载地址 交互原理#### 要理解Lua与C的...

  • Unity xlua 从lua传递byte[]数据到C#

    最近在使用xlua protobuf开发项目。 在lua中是没有byte[]类型的,lua里的byte[]与str...

  • Lua与C#的交互实现

    lua与C#交互使用LuaInterface实现定义变量:1,Lua lua = new Lua() --定义一个...

  • 编译支持 lua 和 ruby 的 vim

    下载 Vim,Lua,LuaJIT 解压 编译安装 Lua 编译安装 LuaJIT 查看 Lua 与 LuaJIT...

  • lua 和 cpp 互调

    本文编译 lua 版本为 5.3 编译 lua5.3 例子中涉及为 lua 编写 so,(lua require ...

  • JS in Android (Google V8)

    简介 由于项目动态化的需要,希望在 Android 应用中嵌入脚本语言。常见有 Lua 与 Js。Lua 的集成在...

  • Lua中的CAPI概述

    头文件lua.h: Lua提供的基础函数,包括创建Lua环境,调用Lua函数,读写Lua环境中的全局变量,以及注册...

网友评论

      本文标题:Lua中and与or

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