在Scala中,除了Cats之外,还有任何triple equals===方法吗?
我花了一段时间在谷歌上搜索一个非猫的三重相等方法,但除了Scalaz之外,我什么也找不到。不幸的是,我无法计算出此库中在Scala中,除了Cats之外,还有任何triple equals===方法吗?,scala,equals,scalaz,scala-cats,triple-equals,Scala,Equals,Scalaz,Scala Cats,Triple Equals,我花了一段时间在谷歌上搜索一个非猫的三重相等方法,但除了Scalaz之外,我什么也找不到。不幸的是,我无法计算出此库中==的导入 有人能帮你吗,非常感谢。如果你只需要=,你可以很容易地用自己的功能模仿猫的行为: 隐式类AnyWithTripleEquals[T](a:T){ def==(b:T):布尔值=a等于b } /* scala>“2”=“3” res0:Boolean=false scala>“2”==3 :13:错误:类型不匹配; 发现:Int(3) 必需:字符串 "2" === 3
==
的导入
有人能帮你吗,非常感谢。如果你只需要
=
,你可以很容易地用自己的功能模仿猫的行为:
隐式类AnyWithTripleEquals[T](a:T){
def==(b:T):布尔值=a等于b
}
/*
scala>“2”=“3”
res0:Boolean=false
scala>“2”==3
:13:错误:类型不匹配;
发现:Int(3)
必需:字符串
"2" === 3
*/
如果你只需要=
,你可以很容易地用自己的功能模仿猫的行为:
隐式类AnyWithTripleEquals[T](a:T){
def==(b:T):布尔值=a等于b
}
/*
scala>“2”=“3”
res0:Boolean=false
scala>“2”==3
:13:错误:类型不匹配;
发现:Int(3)
必需:字符串
"2" === 3
*/
在我的脑海中,其他使用=
的库包括:
- Slick在查询中使用
表示===
=
- 测试框架中的匹配器,例如,使用
检查断言,并(通常)引发断言错误,有时会出现一些细微的差异(我认为是scalatest?)==
- 语法-
或导入cats.syntax.eq.\u
或导入cats.syntax.all.\u
(如果重复导入语法,Scala将无法解析)导入cats.implicits.\u
- 实例-如果比较2
,则需要一个A
的隐式实例。cats.Eq[A]
s、List
s等的实例可以在Map
、cats.instances.List.\u
、cats.instances.Map.\u
或cats.instances.all.\u
中找到(与上述规则相同)。所有“正常”类型都应该有实例,但如果您有自己的实例,则需要自己提供cats.implicits.\u
实例,或者使用类似的方法派生实例Eq
如果您不介意一些性能损失(由
isInstanceOf
内部equals
引起)和平等检查定义缺乏灵活性,您可以使用@sachav的解决方案。在我的头上,使用=
的其他库包括:
- Slick在查询中使用
表示===
=
- 测试框架中的匹配器,例如,使用
检查断言,并(通常)引发断言错误,有时会出现一些细微的差异(我认为是scalatest?)==
- 语法-
或导入cats.syntax.eq.\u
或导入cats.syntax.all.\u
(如果重复导入语法,Scala将无法解析)导入cats.implicits.\u
- 实例-如果比较2
,则需要一个A
的隐式实例。cats.Eq[A]
s、List
s等的实例可以在Map
、cats.instances.List.\u
、cats.instances.Map.\u
或cats.instances.all.\u
中找到(与上述规则相同)。所有“正常”类型都应该有实例,但如果您有自己的实例,则需要自己提供cats.implicits.\u
实例,或者使用类似的方法派生实例Eq
如果您不介意一些性能损失(由
isInstanceOf
内部equals
引起)和平等检查定义缺乏灵活性,您可以使用@sachav的解决方案。另一个提供==
的库是,它基本上是ScalaTest使用的一组实用程序,它们打包为一个单独的库
import org.scalactic._
import TypeCheckedTripleEquals._
"Hello" === "Hello" //true
1 === "Hello" //won't compile
您还可以“配置”隐式解析等式的方式:
import org.scalactic._
import TripleEquals._
import StringNormalizations._
import Explicitly._
implicit val strEquality = decided by defaultEquality[String] afterBeing lowerCased
"Hello" === "hello" // true
"normalized" === "NORMALIZED" // true
另一个提供
=
的库是,它基本上是ScalaTest使用的一组实用程序,打包为一个单独的库
import org.scalactic._
import TypeCheckedTripleEquals._
"Hello" === "Hello" //true
1 === "Hello" //won't compile
您还可以“配置”隐式解析等式的方式:
import org.scalactic._
import TripleEquals._
import StringNormalizations._
import Explicitly._
implicit val strEquality = decided by defaultEquality[String] afterBeing lowerCased
"Hello" === "hello" // true
"normalized" === "NORMALIZED" // true
关于scalaz尝试
import scalaz._
import Scalaz._
42 === "hello" // error: type mismatch; found: String("hello") required: Int
在哪里
关于scalaz尝试
import scalaz._
import Scalaz._
42 === "hello" // error: type mismatch; found: String("hello") required: Int
在哪里
TypeCheckedTripleEquals.\可能是编译时检查所必需的。谢谢,希望这有一个用于比较选项[String]sTypeCheckedTripleEquals的导入。\可能是编译时检查所必需的。谢谢,希望这有一个用于比较选项[String]的导入。这很好,谢谢,只是我在代码中运行WartRemove,equals被禁用,以及==这太好了谢谢你,只是我在代码中运行WartRemove,equals被禁用,以及==你想解决什么问题?为什么要查找
===
的用法?如果你能详细阐述你的问题,你可能会得到更相关的答案。你想解决什么问题?为什么要查找===
的用法?如果你能详细阐述你的问题,你可能会得到更相关的答案。