gpt4 book ai didi

scala - Spark Scala 编译器不会提示双重与三重相等

转载 作者:行者123 更新时间:2023-12-05 01:54:26 24 4
gpt4 key购买 nike

如果我尝试这个,我会得到一个编译器错误

df.filter($"foo" == lit(0))

忘记了我在 Spark 中需要三等号。

但是,如果我这样做,我会得到错误的答案但没有错误:

df.filter($"foo".between(baz, quux) || $"foo" == lit(0))

有人可以解释为什么编译时检查在第一种情况下对我有帮助,而在第二种情况下却没有帮助吗?

最佳答案

因为 $"foo"== lit(0) 总是被评估为 Boolean = false

因此,在第一种情况下,您尝试通过传递 bool 值来调用方法 filter,而它需要一个字符串表达式或列表达式。因此你会得到一个错误。

现在进入第二种情况:

$"foo".between(baz, quux) || $"foo"== lit(0) 被计算为:

(((foo >= baz) AND (foo <= quux)) OR false)

因为您在列表达式 ($"foo".between(baz, quux)) 和文字 bool 值 之间执行 OR || 而被接受>假

换句话说,它被解释为$"foo".between(baz, quux) ||点亮(假)

关于scala - Spark Scala 编译器不会提示双重与三重相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70623076/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com