iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Lua中的三目运算怎么理解
  • 525
分享到

Lua中的三目运算怎么理解

2023-06-27 22:06:50 525人浏览 薄情痞子
摘要

这篇文章主要讲解了“lua中的三目运算怎么理解”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Lua中的三目运算怎么理解”吧!Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开

这篇文章主要讲解了“lua中的三目运算怎么理解”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Lua中的三目运算怎么理解”吧!

Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。

Lua中的三目运算怎么理解

三目运算

熟悉 C/C++ 的老司机都知道三目运算 a ? b : c,这种写法替换简单的条件判断语句可以在不增加阅读难度的情况下,使代码尽量保持简洁。

int a, b, ret;//if-elseif (a > b)   ret = a;else   ret = b;//三目运算符ret = a > b ? a : b;

Lua 中的三目运算

Lua 原生的语义并没有实现三目运算,一般是通过逻辑运算符 and 和 or 来模拟三目运算符的。

Lua 中 and 和 or 都使用”短路求值(short_cur evaluation)”,也就是说,它们只会在需要时才去评估第二个操作数。

local a, b, ret;ret = a > b and a or b

穷举所有可能性:

a > b 时:

a > b and a –> truea or b –> a

a

a > b and a –> falsea or b –> b

完美!

Lua 中的三目运算符陷阱

按照从特殊到一般的原则:

  • 三目运算的一般形式a ? b : c

    a = true,结果为b a = false,结果为c

  • 对应Lua中的a and b or c

    • a = true
    • a = false
    • a and b –> false
    • b or c –> c
    • a and b –> false
    • b or c –> c
    • a = true
    • a = false
    • a and b –> true
    • b or c –> b
    • a and b –> false
    • b or c –> c
    • b = true
    • b = false

可以看到当 b = false 时,Lua模拟的 a and b or c 始终返回 c 并不能还原三目运算符的原貌。

一般化的 a and b or c

那么有没有办法可以解决 b = false 失效的问题呢?

由此我联想到 C 语言有一道常规的考题:请使用宏定义写一个返回两个值中较小值的方法。

在校时第一次看到本题,第一反应如下:

#define MIN(A,B) A

然而这种写法在很多嵌套的使用环境中都不能返回正确的结果。比如:2 * MIN(3, 4)展开为 2 * 3

#define MIN(A,B) ((A)

还有好奇心的同学可以参考:宏定义的正确写法,三目运算的宏定义

从这个示例中,我就在想如何能保证 a and b or c 中 b 为真或者 b 不产生歧义呢?

  1. and的运算优先级高于or,简单的改变运算顺序并没有用。
  2. 这时就想到了lua中万能的table,能不能把a,b,c都放到table中来改变b的存在呢?要注意{nil}也是一个为true的对象。 a,b,c都替换为table:{a} and {b} or {c}。
  3. 三目运算中a是条件,结果是b或者c。其实a并不需要放入table中,否则{a}就始终为true了,失去了条件的意义。而{b} or {c}的结果也必然是一个table,该table只有一个元素。那么通过[1]即可访问。
  4. 综上所述,更一般化的Lua三目运算为:(a and {b} or {c})[1]

感谢各位的阅读,以上就是“Lua中的三目运算怎么理解”的内容了,经过本文的学习后,相信大家对Lua中的三目运算怎么理解这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Lua中的三目运算怎么理解

本文链接: https://www.lsjlt.com/news/314345.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Lua中的三目运算怎么理解
    这篇文章主要讲解了“Lua中的三目运算怎么理解”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Lua中的三目运算怎么理解”吧!Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开...
    99+
    2023-06-27
  • 如何理解javascript三目运算符
    这篇文章主要介绍“如何理解javascript三目运算符”,在日常操作中,相信很多人在如何理解javascript三目运算符问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何...
    99+
    2024-04-02
  • Python中的三目(元)运算符详解
    目录Python 三元运算符一、示例 1:使用三元运算符找出两个数字中的最大值。二、示例 2:根据条件的返回值,Python 执行打印语句之一三、示例 3:使用嵌套的三元运算符,找到...
    99+
    2024-04-02
  • Python中的三目运算符(三元表达式)
    一般支持三目运算符的语言(如C语言)的语法格式一般是这样的: 判断条件(返回布尔值)?为真时的结果:为假时的结果 比如: x = x%2==1 x+1:x; python并不支持 :这种符号所表达的先判断再选择的含义,但仍然有相应的...
    99+
    2023-01-31
    表达式 运算符 Python
  • javascript中的三目运算符有哪些
    javascript中的三目运算符有哪些?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。javascript 三目运算符javascript中的三目运算符用作判断时,基本语法为:...
    99+
    2023-06-14
  • Python三目运算符(三元运算符)用法详解(含Python代码)
    一、前言 三目运算符,又称条件运算符,是计算机语言(c,c++,java等)的重要组成部分。它是唯一有3个操作数的运算符,有时又称为三元运算符。 定义: 对于条件表达式b x : y,先计算条件b,...
    99+
    2023-09-26
    python 开发语言 三目运算符
  • Python三目运算符(三元运算符)用法详解(含实例代码)
    目录一、前言二、Python中的三目运算符三、在三目运算符中放置多条语句方式四、总结五、三目运算符的嵌套总结一、前言 三目运算符,又称条件运算符,是计算机语言(c,c++,java等...
    99+
    2023-02-03
    Python三目运算符 python中三元运算符 python三目运算
  • 详解Python中的三元运算
    目录详解Python中的三元运算什么是三元运算符三元运算语句与条件语句的区别嵌套的三元运算表达式三元运算表达式与列表推导式组合三元运算表达式的优点详解Python中的三元运算 什么是...
    99+
    2023-05-15
    Python中的三元运算 三元运算符 python三元运算 python三目运算
  • java三目运算符的用法是什么
    Java中的三目运算符(也称为条件运算符)是一种简洁的条件表达式,用于根据条件的结果选择不同的值。三目运算符的语法如下:```条件 ...
    99+
    2023-10-10
    java
  • 什么是c语言中唯一的三目运算符
    c 语言中唯一的三目运算符是条件表达式,用于简化 if-else 语句。语法:条件 值1 : 值2,其中条件为布尔表达式,值1 和值2 分别为真和假的情况下的返回值。 C 语言中唯一...
    99+
    2024-04-13
    c语言
  • C#中的小数运算怎么理解
    这篇文章主要介绍“C#中的小数运算怎么理解”,在日常操作中,相信很多人在C#中的小数运算怎么理解问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#中的小数运算怎么理解”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-17
  • Java三目运算符的实战案例
    目录1.什么是条件分支语句?条件分支语句共有几种写法?2. 三目元算符又称为三元运算符也称为条件运算符,目的就是根据条件得到数据结果,语法结构:3. switch语句的语法结构如下:...
    99+
    2024-04-02
  • Python中的三元运算语句怎么写
    这篇文章主要介绍“Python中的三元运算语句怎么写”,在日常操作中,相信很多人在Python中的三元运算语句怎么写问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python中的三元运算语句怎么写”的疑惑有所...
    99+
    2023-07-06
  • C#的sizeof运算符和三元运算符怎么用
    本文小编为大家详细介绍“C#的sizeof运算符和三元运算符怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#的sizeof运算符和三元运算符怎么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。实例usi...
    99+
    2023-06-17
  • 怎么用c语言三目运算符求最大值
    你可以使用以下代码来使用C语言的三目运算符求最大值:```c#include int main() {int a, b, max;p...
    99+
    2023-10-10
    c语言
  • 怎么在JavaScript中使用三元运算符
    本篇文章给大家分享的是有关怎么在JavaScript中使用三元运算符,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。JavaScript可以做什么1.可以使网页具有交互性,例如响...
    99+
    2023-06-14
  • Java三种移位运算符原理解析
    Java中有三种移位运算符:左移运算符()和无符号右移运算符(>>>)。1. 左移运算符():将一个数的所有位向右移动指定的位数,高...
    99+
    2023-08-17
    Java
  • Java三目运算符判断非空的方法是什么
    Java中判断非空的方法有多种,以下是其中的一种方法:使用三目运算符对对象进行判空操作,语法如下:```object != null...
    99+
    2023-10-11
    Java
  • JS中三元运算符的语法是什么
    本篇内容主要讲解“JS中三元运算符的语法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JS中三元运算符的语法是什么”吧!三元运算符(也称为条件运算符)可用...
    99+
    2024-04-02
  • C++中唯一的三元运算符是什么
    这篇文章给大家分享的是有关C++中唯一的三元运算符是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。C++三元运算符是?:C++有3种运算符:算数运算符、关系运算符和逻辑运算符。运算符在计算机中的执行顺序 运算...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作