分配作为三元的一部分if

时间:2016-05-05 19:06:27

标签: java ternary-operator

我在代码库中找到了以下代码段。这是广泛使用的代码,并没有引起任何问题,我无法弄清楚原因。

element = someBoolean ?
            element = parentElement :
            element;

第二行不应该在element设置为parentElement后将element = parentElement重置为空值或其他内容

ETA:我想知道import org.apache.spark.sql.functions._ val diff_secs_col = col("ts1").cast("long") - col("ts2").cast("long") 子句的返回值是什么,因为它似乎没有任何返回值。我忘了在java中有一个多重赋值的概念,所以元素只能被设置两次。

2 个答案:

答案 0 :(得分:8)

  

第二行不应该将元素重置为空值或   设置为parentElement后的东西

我不知道为什么你会这么想。整个陈述的目的是将element重新分配给parentElement。该陈述相当于:

element = someBoolean ?
            parentElement:
            element;

这是因为赋值语句(element = parentElement)具有RHS的值(即parentElement)。不过我会这样写:

if (someBoolean) {
    element = parentElement;
}

答案 1 :(得分:3)

这项任务毫无用处,因为你的代码可以写成......

element = someBoolean ?
            parentElement:
            element;

仅在您的代码中,您不会立即返回parentElement,而是首先将element设置为parentElement,然后将element设置为element