相关疑难解决方法(0)

`##`和`hashCode`有什么区别?

方法##和有hashCode什么区别?

无论hashCode我使用哪个类或重载,它们似乎都输出相同的值.谷歌也没有帮助,因为它找不到符号##.

scala hashcode

37
推荐指数
3
解决办法
5892
查看次数

Scala类和case类==比较

我不太明白为什么当我们将两个实例与一个类的相同属性进行比较而不重写equals它将给出的方法时false.但是,true当我们比较一个案例类的两个实例时,它会给出一个.例如

 class A(val name: String, val id: Int)
 case class B(name: String, id: Int)

 object Test {
    val a1 = new A('a',1)
    val a2 = new A('a',1)
    println(a1 == a2)   //this returns false

    var b1 = B('b',1)
    var b2 = B('b',1)
    println(b1 == b2)   //this returns true

 }
Run Code Online (Sandbox Code Playgroud)

有人可以解释原因吗?

scala equality

36
推荐指数
1
解决办法
2万
查看次数

在case类中重命名和覆盖equals方法

我想定义一个名称Ext,它将现有equals方法重命名为,equalsByAttributes并同时定义一个新equals方法.该特征用于扩展案例类.我目前的解决方案看起来有点hacky:

case class A(id: Int) extends Ext

trait Ext { p: Product =>
    // new implementation
    override def equals(obj: Any) = obj match {
        case that: AnyRef => this eq that
        case _ => false
    }

    // reimplementation of old equals implementation
    def equalsByAttributes(obj: Any) = obj match {
        case that: Product =>
            if (this.getClass.isAssignableFrom(that.getClass) || that.getClass.isAssignableFrom(this.getClass))
                p.productIterator.toList == that.productIterator.toList
            else
                false
        case _ => false
    }
}
Run Code Online (Sandbox Code Playgroud)

我不知道是否有引用一个直接的方式Aequals …

scala case-class

8
推荐指数
2
解决办法
8334
查看次数

hashcode是否返回内存地址?

可能重复:
什么是对象hashcode
hashCode()和identityHashCode()如何在后端工作?

我不是在讨论String类或任何其他重写hashcode的类.假设我只是创建了一个Object类的新对象,那么hashcode()无论如何都会identityHashCode(Object x)返回true,返回该对象的内存地址?

java hashcode

3
推荐指数
1
解决办法
6561
查看次数

标签 统计

scala ×3

hashcode ×2

case-class ×1

equality ×1

java ×1