请证实三元运算符与常规的if / else块是如何工作的。例如:

Boolean isValueBig = value > 100 ? true : false;

精确复制: 如何使用三元运算?

有帮助吗?

解决方案

Boolean isValueBig = ( value > 100  ) ? true : false;


Boolean isValueBig;

if(  value > 100 ) { 
      isValueBig = true;
} else { 
     isValueBig = false;
}

其他提示

三元操作和之间的差异的if / else是三元表达式是计算结果为值,如果/其他不同时发言。

要使用你的榜样,从使用的三元表达的改变,以if / else语句,你可以使用以下语句:

Boolean isValueBig = null;
if(value > 100)
{ 
    isValueBig = true 
}
else
{
    isValueBig = false;
}

在这种情况下,虽然,你的语句是相同的:

Boolean isValueBig = (value > 100);

当我是新的C ++,我发现,它帮助阅读此构建体如下:

Boolean isValueBig = if condition ? then x else: y;

(注意,这是不合法的代码。这正是我训练自己在我的脑海阅读。)

Boolean isValueBig;

if (value > 100)
{
   isValueBig = true;
}
else 
{
   isValueBig = false;
}
Boolean isValueBig;

if(value > 100) { isValueBig = true; } else { isValueBig = false; }

我是从来没有的三元运算符的风扇,因为我认为这是难以阅读。由于恰巧,乔恩斯基特和他的书, C#中深度的最后打这条老狗的头,并得到它下沉。乔恩说,我意译,把它作为一个问题。

  

值> 100

     

“是”: “否”

现在,盲人能看见。

希望这有助于你把它的第二天性。

:操作员MSDN页“的条件运算符(?:)返回取决于布尔表达式的值的两个值中的一个。”

所以,你可以使用三元运算返回不止布尔值:

   string result = (value > 100 ) ? "value is big" : "value is small";

<强> PHP实施例

<?php

  // Example usage for: Ternary Operator
  $action = (empty($_POST['action'])) ? 'default' : $_POST['action'];

  // The above is identical to this if/else statement
  if (empty($_POST['action'])) {
    $action = 'default';
  } else {
    $action = $_POST['action'];
  }

?>
  

“的表达(表达式1)(表达式2):(表达式3)的计算结果为表达式2 如果表达式1 计算为 TRUE 表达式3 如果表达式1 计算为 FALSE 即可。“

上算对比 PHP文档

请确保你没有真/假零件在Java中混合类型。它产生奇怪的结果: - (

不好的例子,因为你可以很容易地写

Boolean isValueBig = value > 100 ? true : false;

为:

bool isValueBig = value > 100

除此之外,其他人已经回答了。我只是不建议使用三元运营商设置布尔值,因为你正在评估已经是一个布尔值。

我知道这只是一个例子,但它是值得指出的。

其他人已经回答了这个问题,但这里有一件事你应该真正了解三元的使用和我的意思是永远不要做。

让我们假设你有一块这应该返回不同的对象对于某些值的每个可能的变码,可以说为simpliticy的缘故1和5你的代码看起来是这样的整数:

if(i==1) {
    return new ObjectOne();
} else if(i==2) {
    return new ObjectTwo();
} else if(i==3) {
    return new ObjectThree();
} else if(i==4) {
    return new ObjectFour();
} else if(i==5) {
    return new ObjectFive();
} else {
    return new DefaultObject();
}

这很容易理解,但有点沉重。由于的三元是写一个if..else语句的只是另一种方式的可重构这个

return (i==1) ? new ObjectOne() :
       (i==2) ? new ObjectTwo() :
       (i==3) ? new ObjectThree() :
       (i==4) ? new ObjectFour() :
       (i==5) ? new ObjectFive() : new DefaultObject();

这就是所谓的嵌套三元即可。这是邪恶的,现在你知道它,请千万不要用它。它似乎有它的用途类似于上面的情况,但它很可能是在现实生活中,你会需要它失去可读性(想改变与参数的变化量和这样的配置)的地方使用它。

加成扇区:从未设置的属性值内,如果(),单看这个:if(bool=true!=false) { .. }

如从MSDN引用(在一前一后说明)

的字符串结果=(值> 100)? “值是大”:“值小”;

可以被理解为:

时值大于100的?如果是的话,串结果是“价值大”,如果没有,字符串结果是“值小。”

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top