我来自Java背景,是Scala的新手。
我正在使用Scala和Spark。但我无法理解我使用==
和===
的位置。
有谁能让我知道在哪种情况下我需要使用这两个操作符,==
和===
之间的区别是什么?
答案 0 :(得分:34)
“==
”使用equals
方法检查两个引用是否指向同一个对象。 “===
”的定义取决于上下文/对象。对于Spark,“===
”正在使用equalTo
方法。
参见
==
https://spark.apache.org/docs/2.0.0/api/java/org/apache/spark/sql/Column.html#equals(java.lang.Object) ===
https://spark.apache.org/docs/2.0.0/api/java/org/apache/spark/sql/Column.html#equalTo(java.lang.Object) (因为你引用Spark :) Spark的一个重要区别是返回值。对于专栏:
==
返回布尔值
===
返回一列(其中包含两列元素比较的结果)
答案 1 :(得分:10)
Generally speaking, they are just functions.
For different types, "==" and "===" might be defined or "overloaded" for different meanings.
For example, in some test framework, "===" is defined for some special function. See this。
答案 2 :(得分:1)
ScalaTest允许您使用Scala的断言语法,但定义了一个三等号运算符(===),以便为您提供更好的错误消息。以下代码会给出一个错误,指出断言失败:
断言(1 == 2) 使用三等于将提供更多信息性的错误消息," 1不等于2":断言(1 === 2)
查看此页面了解更多详情; What is the === (triple-equals) operator in Scala Koans?