在http://en.wikipedia.org/wiki/?之类的页面中:三元/条件运算符?:
似乎用于条件赋值。我试图将其用于方法调用,如下所示:
(condition) ? doThis() : doThat();
两种方法都返回void。Java告诉我这不是一个声明。
所以,我猜我不能进行条件方法调用…还是可以吗?
在这种情况下,将三元运算符视为一种方法。说a ? b : c
的话(出于您正在考虑的目的和目的,请参阅lasseespeholt的评论)等同于调用伪代码方法:
ternary(a, b, c)
if a
return b
else
return c
这就是为什么人们可以说类似的话的原因x = a ? b : c
;基本上就像说x = ternary(a, b, c)
。当您说时(condition) ? doThis() : doThat()
,实际上是在说:
if condition
return doThis()
else
return doThat()
看看如果我们尝试用方法代替它们返回的结果会发生什么
if condition
return ???
else
return ???
考虑甚至没有意义。
doThis()
并且doThat()
不返回任何内容,因为void
它不是可实例化的类型,所以该ternary
方法也不返回任何内容,因此Java不知道如何处理您的语句并抱怨。
有很多解决方法,但是它们都是不好的做法(您可以将方法修改为具有返回值,但不对其返回值做任何事情,可以创建新方法来调用您的方法,然后返回null等。
)。if
在这种情况下,只使用一条语句会更好。
编辑 此外,还有一个更大的问题。即使您返回值,Java也不会考虑a ? b : c
任何意义上的语句。
在像http://en.wikipedia.org/wiki/?这样的页面中:三元/条件运算符似乎用于条件赋值。我尝试将其用于方法调用,如下所示: 两个方法都返回void。Java告诉我这不是声明。 所以,我猜我不能做条件方法调用...或者我可以吗?
问题内容: C和许多其他语言具有条件(也称为三元)运算符。这使您可以根据条件的真实性在两个值之间进行非常简洁的选择,这使表达式(包括赋值)非常简洁。 我之所以错过了,是因为我发现我的代码有很多条件分配,在Python中需要四行代码: 而在C中它将是: 在文件中执行一两次是可以的,但是如果您有很多条件分配,则行数会爆炸,最糟糕的是吸引他们。 我喜欢条件运算符的简洁性,因为它使我认为略微的事情不会在浏
我想创建一个日期时间字符串,但添加CET/CEST,具体取决于是否夏时制。 因此,如果返回true,则附加“CEST”字符串,如果不是,则仅附加“CET”。 有没有简单/快捷的方法来做这件事?
实际上,三元运算符的语言示例中是否有一个内置的不是以下形式的(条件运算符)? 我不是在找一种特定的语言,虽然至少有中等程度的流行度会更好。
三元运算符 三元运算符 ? 应该只用在它能让代码更加清楚的地方。 一个条件语句的所有的变量应该是已经被求值了的。类似 if 语句,计算多个条件子句通常会让语句更加难以理解。或者可以把它们重构到实例变量里面。 推荐: result = a > b ? x : y; 不推荐: result = a > b ? x = c > d ? c : d : y; 当三元运算符的第二个参数(if 分支)返回和条
问题内容: 如果Python没有三元条件运算符,是否可以使用其他语言构造来模拟一个? 问题答案: 它是在2.5版中添加的。表达式语法为: 第一被评估,则恰好中的任一个a或b进行评估并返回基于所述布尔值。如果为,则被评估并返回但被忽略,否则被评估为返回但被忽略。 这允许发生短路,因为仅当评估为时才进行评估,而b根本不评估,而当为 评估时,仅当评估时就完全不评估。 例如: 注意条件是表达式,而不是语句