当前位置: 首页 > 知识库问答 >
问题:

如何编写三元条件运算符?

戚令秋
2023-03-14

在Kotlin中,这个表达式的等价物是什么?

a ? b : c

这不是Kotlin中的有效代码。

共有3个答案

葛成双
2023-03-14
匿名用户

您可以定义自己的Boolean扩展函数,当Booleanfalse时,该函数返回null,以提供类似于三元运算符的结构:

infix fun <T> Boolean.then(param: T): T? = if (this) param else null

这会使一个a?b:c表达式翻译成a,然后b?:c,比如:

println(condition then "yes" ?: "no")

更新:但是要做更多类似Java的条件切换,你需要这样的东西

中缀乐趣

println(条件然后{yes}?:“no”)注意lambda。其内容计算应推迟到我们确定条件

这个看起来很笨拙,这就是为什么存在高要求的请求来将Java三元运算符移植到静态编程语言中

杜晨朗
2023-03-14
if (a) b else c

^你可以用什么来代替三元运算符表达式a?b:c这是Kotlin语法不允许的。

在Kotlin中,许多控制语句,例如ifwhen,甚至try,都可以用作表达式。因此,这些语句可以产生一个结果,该结果可以分配给变量,也可以从函数返回,等等。

由于静态编程语言的表达式,该语言并不真正需要三元运算符。

if (a) b else c

你可以用什么来代替三元运算符表达式a?b:c

我认为前一个表达式更具可读性,因为每个人都知道ifelse是做什么的,而?:如果您还不熟悉语法,则相当不清楚。

尽管如此,我不得不承认,我经常想念更方便的三元运算符。

其他替代品

什么时候

当检查条件时,您可能还会看到Kotlin中使用的结构。这也是一种表达if else以另一种方式级联的方式。以下内容与OTs示例相对应。

when(a) {
    true -> b
    false -> c
}

扩展

正如其他答案中的许多好例子(Kotlin三元条件运算符)所示,扩展也可以帮助解决您的用例。

宋和颂
2023-03-14

在Kotlin中,if语句是表达式。因此,以下代码是等效的:

if (a) b else c

在这里,表达和陈述之间的区别很重要。在Java/C#/JavaScript中,if形成一条语句,这意味着它不会解析为值。更具体地说,您不能将其分配给变量。

// Valid Kotlin, but invalid Java/C#/JavaScript
var v = if (a) b else c

如果你来自一种语言,如果是一种语句,这可能看起来不自然,但这种感觉应该很快就会消退。

 类似资料:
  • 问题内容: 如何用elseif部分编写PHP三元运算符? 我看到了带有PHP三元运算符和的基本示例,如下所示: 我如何将这样的“ elseif”部分放入三元运算符中? 问题答案: 三元不是您想要的一个很好的解决方案。它不会在您的代码中可读,并且有很多更好的解决方案可用。 为什么不使用数组查找“ map”或“ dictionary”,如下所示: 此应用程序的三元最终看起来像这样: 为什么这样不好?因

  • 三元运算符 三元运算符 ? 应该只用在它能让代码更加清楚的地方。 一个条件语句的所有的变量应该是已经被求值了的。类似 if 语句,计算多个条件子句通常会让语句更加难以理解。或者可以把它们重构到实例变量里面。 推荐: result = a > b ? x : y; 不推荐: result = a > b ? x = c > d ? c : d : y; 当三元运算符的第二个参数(if 分支)返回和条

  • 问题内容: 如果Python没有三元条件运算符,是否可以使用其他语言构造来模拟一个? 问题答案: 它是在2.5版中添加的。表达式语法为: 第一被评估,则恰好中的任一个a或b进行评估并返回基于所述布尔值。如果为,则被评估并返回但被忽略,否则被评估为返回但被忽略。 这允许发生短路,因为仅当评估为时才进行评估,而b根本不评估,而当为 评估时,仅当评估时就完全不评估。 例如: 注意条件是表达式,而不是语句

  • 如果Python没有三元条件运算符,是否可以使用其他语言构造来模拟一个?

  • 本文向大家介绍Python条件表达式(或“三元运算符”),包括了Python条件表达式(或“三元运算符”)的使用技巧和注意事项,需要的朋友参考一下 示例 三元运算符用于内联条件表达式。最好在易于阅读的简单,简洁的操作中使用。 参数的顺序与许多其他语言(例如C,Ruby,Java等)不同,当不熟悉Python的“令人惊讶”行为的人使用它时,它们可能会导致错误(它们可能会颠倒顺序)。 有些人认为它“笨

  • 问题内容: 我有以下代码 从2.2开始,我收到了折旧警告,有什么想法可以解决此问题? 我有这个解决方案: 但这不是很好。 问题答案: 怎么样: 看来您可能正在执行类似时钟算术的操作。如果是这样,那么可以更好地理解这一点: