When working with a language that supports object-oriented programming (OOP), there are two concepts of equality. The first is when two separate references point to the exact same instance in memory. The second is when two objects are separate instances in memory but have the same value. What the same value means is specified by the developer of the class. For example, for two square instances to be the same, we might just require they have the same length and width regardless of coordinates.
The former is called referential equality. To test whether two references point to the same instance, we use the === operator (triple equals) or !== for negation:
val a = File("/mobydick.doc") val b = File("/mobydick.doc") val sameRef = a === b
The value of the test a === b is false because, although a and b reference...