符号 =?= 在 Scala 中是什么意思?
What does the symbol =?= mean in Scala?
有人可以深入了解这个符号的含义以及它在 Scala 中的使用方式吗?我第一次看到这个符号是在这个关于 Scala 函数结构的视频中(你可以看到他在这里输入符号:https://youtu.be/tD_EyIKqqCk?t=3364)
A google 搜索 link 找到了过时的 HTCondor 手册第 4.1.3.3 节/比较运算符/第 5 点(https://research.cs.wisc.edu/htcondor/manual/v7.8/4_1HTCondor_s_ClassAd.html#ClassAd:evaluation-meta)
它指出:
“此外,运算符 =?= 和 =!= 的行为与 == 和 != 类似,但并不严格。从语义上讲,=?= 测试其操作数是否 identical,'' i.e., have the same type and the same value. For example, 10 == UNDEFINED and UNDEFINED == UNDEFINED both evaluate to UNDEFINED, but 10 =?= UNDEFINED and UNDEFINED =?= UNDEFINED evaluate to FALSE and TRUE respectively. The =!= operator test for the
与条件不相同."
我的问题是,在显示的代码中使用“==”会产生相同的结果吗?
您的引用来自某种似乎与 Scala 无关的语言 ClassAd。我以前从未见过这种方法 =?=
。
但是,我在 Michael Pilquist 拥有的存储库中找到了它的定义 here,他还制作了视频:
object IsEq {
implicit class Syntax[A](lhs: A) {
def =?=(rhs: A): IsEq[A] = IsEq(lhs, rhs)
}
}
IsEq
定义如下:
case class IsEq[A](lhs: A, rhs: A) {
def isEqual(implicit eq: Equal[A]): Boolean = eq.isEqual(lhs, rhs)
}
并且 Equal
似乎是一个类型类,用于将相等性限制为相同类型的对象并使用自定义行为进行比较(例如,List
有一个 Equal
实例用于检查所有元素都相等)。
trait Equal[A] {
def isEqual(lhs: A, rhs: A): Boolean
}
有人可以深入了解这个符号的含义以及它在 Scala 中的使用方式吗?我第一次看到这个符号是在这个关于 Scala 函数结构的视频中(你可以看到他在这里输入符号:https://youtu.be/tD_EyIKqqCk?t=3364)
A google 搜索 link 找到了过时的 HTCondor 手册第 4.1.3.3 节/比较运算符/第 5 点(https://research.cs.wisc.edu/htcondor/manual/v7.8/4_1HTCondor_s_ClassAd.html#ClassAd:evaluation-meta)
它指出:
“此外,运算符 =?= 和 =!= 的行为与 == 和 != 类似,但并不严格。从语义上讲,=?= 测试其操作数是否 identical,'' i.e., have the same type and the same value. For example, 10 == UNDEFINED and UNDEFINED == UNDEFINED both evaluate to UNDEFINED, but 10 =?= UNDEFINED and UNDEFINED =?= UNDEFINED evaluate to FALSE and TRUE respectively. The =!= operator test for the
与条件不相同."
我的问题是,在显示的代码中使用“==”会产生相同的结果吗?
您的引用来自某种似乎与 Scala 无关的语言 ClassAd。我以前从未见过这种方法 =?=
。
但是,我在 Michael Pilquist 拥有的存储库中找到了它的定义 here,他还制作了视频:
object IsEq {
implicit class Syntax[A](lhs: A) {
def =?=(rhs: A): IsEq[A] = IsEq(lhs, rhs)
}
}
IsEq
定义如下:
case class IsEq[A](lhs: A, rhs: A) {
def isEqual(implicit eq: Equal[A]): Boolean = eq.isEqual(lhs, rhs)
}
并且 Equal
似乎是一个类型类,用于将相等性限制为相同类型的对象并使用自定义行为进行比较(例如,List
有一个 Equal
实例用于检查所有元素都相等)。
trait Equal[A] {
def isEqual(lhs: A, rhs: A): Boolean
}