LUA中的and与or

2023-11-08

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

a = nil
b = 1
exp = 1 < 2 and a or b
print(exp == a) --fales
exp = 1 > 2 and a or b
print(exp == b) --true
exp = (1 < 2 and {a} or {b})[1]
print(exp == a) --true
exp = (1 > 2 and {a} or {b})[1]
print(exp == b) --true

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LUA中的and与or 的相关文章

  • 如何使用Lua脚本语言打开Web套接字?

    作为初学者 我想在基于 Linux 的服务器上使用 Lua 打开一个 Web 套接字 该服务器应允许 Android 客户端连接到它 你能给我一些用Lua打开网络套接字的示例代码吗 您两周前已经问过同样的问题并得到了回答 LUA 脚本 We
  • 使用 EVAL、SCAN 和 DEL 的 Redis 通配符删除脚本返回“非确定性命令后不允许写入命令”

    因此 我正在寻求构建一个 lua 脚本 该脚本使用 SCAN 根据模式查找键并删除它们 原子地 我首先准备了以下脚本 local keys local done false local cursor 0 repeat local resul
  • 如何访问废弃的函数参数?

    在 Lua 中 调用带有多余参数的函数将简单地丢弃这些参数 有没有可能与debug库来访问这些被丢弃的参数 我不是在寻找可变参数函数 function test local info debug getinfo 1 u print info
  • 如何在多个Lua State(多线程)之间传递数据?

    我在中启动Redis连接池redis lua 通过从 C 调用 我得到了redis lua state 此 Lua 状态全局启动一次 仅在其他线程中启动get从中 当有一个 HTTP 请求 工作线程 时 我需要从redis lua stat
  • 十六进制常数 = 格式错误的数字?

    我有一个 Lua 脚本 我试图在其中使用十六进制数字 0x 如果我使用官方 Windows 二进制文件在控制台中运行此脚本 它可以正常工作 但是如果我在我的应用程序中运行它 简单的 dofile 我得到 malformed number n
  • 我应该用 C++ 封装 Lua 代码的哪些代码?

    我终于将 LuaBind 配置为与我的 C 项目一起使用 我最近发现 Tiled 地图编辑器可以选择将文件导出为 lua 所以我想尝试一下 我将使用什么代码来封装下面粘贴的代码以使其与我的 C RPG 项目一起使用 return versi
  • 检查lua中是否存在目录?

    如何检查 lua 中是否存在目录 如果可能的话最好不使用 LuaFileSystem 模块 尝试做类似以下 python 行的事情 os path isdir path 这是一种在 Unix 和 Windows 上都适用的方式 无需任何外部
  • 确定已编译Lua的编译器版本

    我有一些已编译的 LuaQ 我需要确定用于编译它的确切版本 有什么可能的方法吗 编译的脚本在文件开头有一个标头 4 bytes signature x1bLua 1 byte version 0x51 1 byte format 1 byt
  • 为什么 LuaJIT 这么好?

    编辑 不幸的是 LuaJIT 已从下面链接的比较中删除 This 比较 http shootout alioth debian org u64 which programming languages are fastest php编程语言的
  • Lua中如何在另一个表的表成员中搜索

    我正在编写一个 lua 程序 它有一个表 该表是另一个表的成员 当我向该成员表添加新日期时 一切正常 但是 当我想在该表中搜索时 无论我给出什么键 我总是会将最后一行添加到表中 如何在该成员表中正确搜索 Stream name functi
  • lua中的权限问题

    是否需要在 corona build settings 中设置一些特定权限才能将高分永久保存在文件中 每次运行代码时都会出现 权限被拒绝 的错误 如何纠正这个错误 这是我尝试过的代码 function read score local f1
  • 去掉尾随零和小数点

    使用 Lua 我将数字格式化为可变位数并去掉尾随零 小数点 例如 string format precision f value gsub 0 1 gsub 值的类型为数字 正数 负数 整数 小数 所以任务已经解决了 但出于美学 教育和性能
  • 安装Lua套接字库

    要么我太累了 要么我瞎了 我想学习 Lua 网络 因此我必须安装socketlib 所以我可以轻松地要求它 但我不知道我应该 要求 哪些文件 例子说 local socket require socket 但正如我所说 如果我使用 我不知道
  • Lua中按字符分割字符串

    我有像这样的字符串 ABC DEF 我需要将它们分开 字符并将两个部分分别分配给一个变量 在 Ruby 中 我会这样做 a b ABC DEF split 显然Lua没有这么简单的方法 经过一番挖掘后 我找不到一种简短的方法来实现我所追求的
  • Lua 访问表的键和值

    我想在关卡编辑器中读取 Lua 文件 这样我就可以以可视化格式显示其数据供用户编辑 如果我有一个像这样的 Lua 表 properties Speed 10 TurnSpeed 5 Speed显然是关键并且10价值 我知道如果我知道像这样的
  • 在 Awesome-wm 中为特定应用程序设置窗口布局

    如何配置很棒 以便它可以启动两个窗口对齐的新应用程序 如下所示 xxxxxxxxxx xxxxxxxxxx xxxxxxxxxx xxxxxxxxxx 其中 x 是 pidgin 中的对话窗口 是好友列表窗口 一般来说 我想指定右窗口的宽度
  • Lua中有状态迭代器和无状态迭代器的区别

    Lua中无状态和有状态迭代器有什么区别 请详细解释一下 什么时候需要使用无状态 什么时候需要使用另一种 我需要例子来理解这个概念 首先让我们就一个定义达成一致 在 Lua 中 迭代器是function 类似对象 每次调用时都会返回序列中的下
  • gsub 的转义字符串

    我读了一个文件 local logfile io open log txt r data logfile read a print data output n w r 1 2 n t x re S 是的 日志文件看起来很糟糕 因为它充满了各
  • 如何使用 Lua 运行可执行文件?

    我有一个可执行文件想要使用 Lua 运行 我该怎么做 似乎无法在任何地方找到有关此的任何文档 您可以使用 Lua 原生的 执行 命令 Example os execute c temp program exe 资料来源 Lua 指南 os
  • 在 Lua 中只归档一次

    我想知道是否有一种方法可以只执行一次 lua 文件 并且后续尝试执行该 lua 文件将导致无操作 我已经考虑过做一些类似于 C header 的 if else endif 技巧的事情 我想知道是否有一个标准方法来实现这一点 James w

随机推荐

  • 博途离线比较_如何在TIA Portal中比较两个离线项目?

    摘要 在日常的工作中经常需要比较不同的项目或者不同版本的项目 可以通过 离线 在线 或者 离线 离线 方式来比较 在 离线 在线 比较情况下 其中一个项目是在CPU中 处于在线状态 另一个是存储介质中 处于离线状态 在离线 离线 比较情况下
  • JDBC对Mysql utf8mb4字符集的处理

    在开发微信开放平台 接入微信公众号的数据时 关于用户的nickname和文本消息是 大量出现emoji的文本信息 超时了utf 8字符集的存储范围 在存储数据时 出现部分特殊字符存储字符串失败 服务端解决方案 查阅MySQL官方文档时 给出
  • Informatica跑ETL时,出现ora-26002错误

    用Informatica跑ETL时 出现ora 26002错误 使用BULK时会报这个错误 因为是大批量insert插入所以很多normal insert时该完成的任务没完成 例如表上有索引时 而且BULK不支持update 总结出现这个错
  • vue打印props的值_vue props传值失败 输出undefined的解决方法

    如果在prop中传的值为一个没有使用特殊命名规则的变量如 type 可以顺利传值 而当这个变量为驼峰命名法如 selectName 就会传不过去 解决方法是把selectName标签改为select Name 我是按钮 selectName
  • 关于lcm,gcd的一些性质

    两个整数a b 他们的最大公约数为n 最小公倍数为m 则有 a b都能分解为有限个素数的积 12 2 2 3 1 5 0 30 2 1 3 1 5 1 n为a b所有素因子取较小指数的积 n 2 1 3 1 5 0 6 m为a b所有素因子
  • Win平台高精度Sleep实现

    获取时间戳 GetTickCount Windows平台 可通过GetTickCount和GetTickCount64获取时间戳 它们底层实现是一样的 返回值的位宽不同 GetTickCount返回uint32 t 最大值2 32 单位毫秒
  • OpenCV Python 系列教程2 - OpenCV 的 GUI 特性

    图像入门 学习目标 图像的读取 显示 保存 学习三个函数 cv2 imread cv2 imshow cv2 imwrite 使用 Matplotlib 来显示图像 导入常用包 matplotlib notebook import nump
  • C++ 调用Qml方法

    前言 在Qml和QWidget混合开发中 少不了C 与qml的互相调用 之前总结了一下在qml中调用c 的方法 那反过来如何在业务逻辑中直接修改qml呢 qml调用c 总结 QML和QWidget混合开发 初探 添Qml调用C 方法之自定义
  • IMX6学习记录(9)-实现网络连接,rz/sz文件传输

    上面是我的微信和QQ群 欢迎新朋友的加入 现在我已经自己编译过uboot kernel和rootfs了 遇到一个比较麻烦的事情 拷贝文件需要插拔SD卡 考虑的之后开发的便捷性 准备实现rz sz方式的数据传输 1 修改内核配置 把设备树和默
  • 错误处理--CUDA error: device-side assert triggered(很有效)

    embeding中词的总数设小了 在函数 nn Embedding vocab size embedding dimension 中 参数vocab size 为你字典的总词数 如果在训练中有编号 gt len 字典 的数字出现 就会报这个
  • 服务器怎么打开万向系统,全程监控系统解决方案-20210731072231.doc-原创力文档

    全程监控系统解决方案 全程监控系统解决方案 全程监控系统解决方案 呼集老高速公路 全程监控系统解决方案 二零一零年一月 目录一 需求剖析 错误 不决义书签 二 系统设计方案 错误 不决义书签 系统规划 错误 不决义书签 全程无盲点监控和视频
  • Jira插件安装

    一 Jira插件列表 可以将下面免费插件直接下载 然后登陆jira 在 插件管理 gt 上传插件 将下载后的免费插件直接进行上传安装即可 序号 插件名称 功能概要 供应商 资源 100用户报价 1 GreenHopper 敏捷项目管理 At
  • elasticsearch集群正确关闭、重启方式

    问题原因 在elasticsearch集群中 当集群发现某个节点关闭时 将延迟一分钟后 默认 再开始将该节点上的分片复制到集群中的其他节点 这可能涉及很多I O 由于该节点不久将要重新启动 因此该I O是不必要的 您可以通过在关闭节点之前禁
  • 【博客705】chatgpt:编写日志rotate框架

    chatgpt 编写日志rotate框架 场景 我们的网关服务等为了持久化日志以供排查问题 往往将日志输出到文件 此时如果文件太大 可能导致磁盘被写满 此时就需要对日志文件进行rotate 以保存最新的日志 实现 package main
  • Pytorch中计算自己模型的FLOPs

    转自 Pytorch中计算自己模型的FLOPs thop profile 方法 yolov5s 网络模型参数量 计算量统计 墨理学AI CSDN博客 Pytorch 用thop计算pytorch模型的FLOPs 简书 安装thop pip
  • gcc/gdb/gprof/gcov/valgrind使用

    gcc gdb gprof gcov valgrind使用 ning 发表于 2012年10月05日 23 44 Hits 796 Tag all Table of Contents gcc编译带符号 gdb 启动参数 gdb 查看结构体
  • Blender基础:几何节点修改器

    1 几何节点修改器 几何节点修改器Geometry Node Editor 本质上一种自定义修改器 2 节点的添加 添加节点 节点Node 代表一个函数 功能 演示 添加一个节点 几何数据 变换 连接端口 修改节点的参数 几何节点修改器 是
  • ssh端口转发禁用

    配置1 vi etc ssh sshd config 修改内容 AllowTcpForwarding yes GatewayPorts yes 生效 etc rc d init d sshd restart 配置2 vi etc sysct
  • react中使用useMemo和useCallback

    之前学到的memo是用来优化函数组件的重渲染问题 当传入的属性值都没变化时就不会触发组件的重渲染 否则组件就会重渲染 和类组件中的PureComponent组件是类似 useMemo功能是判断组件中的函数逻辑是否重新执行 用来优化性能 im
  • LUA中的and与or

    逻辑运算符认为false和nil是假 false 其他为真 0也是true and的优先级比or高 其它语言中的and表示两者都为真的时候 才返回为真 而只要有一个假 都返回假 lua虽不仅返回假的语义 还返回导致假的值 也就是说 a an