我在代码库中找到了以下代码段。这是广泛使用的代码,并没有引起任何问题,我无法弄清楚原因。
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中有一个多重赋值的概念,所以元素只能被设置两次。
答案 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
。