=:= (original) (raw)
scala.=:=
An instance of A =:= B
witnesses that the types A
and B
are equal. It also acts as a A <:< B
, but not a B <:< A
(directly) due to restrictions on subclassing.
In case of any confusion over which method goes in what direction, all the "Co" methods (including apply) go from left to right in the type ("with" the type), and all the "Contra" methods go from right to left ("against" the type). E.g., apply turns a From
into a To
, and substituteContra replaces the To
s in a type with From
s.
Type parameters
From
a type which is proved equal to To
To
a type which is proved equal to From
Attributes
See also
<:< for expressing subtyping constraints
Example
An in-place variant of scala.collection.mutable.ArrayBuffer#transpose
implicit class BufOps[A](private val buf: ArrayBuffer[A]) extends AnyVal {
def inPlaceTranspose[E]()(implicit ev: A =:= ArrayBuffer[E]) = ???
// Because ArrayBuffer is invariant, we can't make do with just a A <:< ArrayBuffer[E]
// Getting buffers *out* from buf would work, but adding them back *in* wouldn't.
}
Source
Graph
Supertypes
class From <:< To
trait From => To
Show all
Members list
Substitute To
for From
and From
for To
in the type F[To, From]
, given that F
is a type constructor of two arguments.
Substitute To
for From
and From
for To
in the type F[To, From]
, given that F
is a type constructor of two arguments. Essentially swaps To
and From
in ftf
's type.
Equivalent in power to each of substituteCo and substituteContra.
This method is impossible to implement without throw
ing or otherwise "cheating" unless From = To
, so it ensures that this really represents a type equality.
Attributes
Returns
ftf
, $sameDiff
Definition Classes
Source
If From = To
and To = C
, then From = C
(equality is transitive)
Coerce a From
into a To
.
Coerce a From
into a To
. This is guaranteed to be the identity function.
This method is often called implicitly as an implicit A =:= B
doubles as an implicit view A => B
.
Attributes
Definition Classes
Source
If From = To
and C = From
, then C = To
(equality is transitive)
If From = To
then To = From
(equality is symmetric)
Lift this evidence over any type constructor F
.
Lift this evidence over any type constructor F
.
Attributes
Definition Classes
Source
Lift this evidence over the type constructor F
, but flipped.
Lift this evidence over the type constructor F
, but flipped.
Attributes
Definition Classes
Source
Substitute the From
in the type F[From]
, where F
is any type constructor, for To
.
Substitute the From
in the type F[From]
, where F
is any type constructor, for To
.
Equivalent in power to each of substituteBoth and substituteContra.
This method is impossible to implement without throw
ing or otherwise "cheating" unless From = To
, so it ensures that this really represents a type equality.
Attributes
Returns
ff
, $sameDiff
Definition Classes
Source
Substitute the To
in the type F[To]
, where F
is any type constructor, for From
.
Substitute the To
in the type F[To]
, where F
is any type constructor, for From
.
Equivalent in power to each of substituteBoth and substituteCo.
This method is impossible to implement without throw
ing or otherwise "cheating" unless From = To
, so it ensures that this really represents a type equality.
Attributes
Returns
ft
, $sameDiff
Definition Classes
Source
If From <: To
and To <: C
, then From <: C
(subtyping is transitive)
If From <: To
and To <: C
, then From <: C
(subtyping is transitive)
Attributes
Inherited from:
Source
Composes two instances of Function1
in a new Function1
, with this function applied first.
Composes two instances of Function1
in a new Function1
, with this function applied first.
Type parameters
A
the result type of function g
Value parameters
g
a function R => A
Attributes
Returns
a new function f
such that f(x) == g(apply(x))
Definition Classes
Inherited from:
Source
If From <: To
and C <: From
, then C <: To
(subtyping is transitive)
If From <: To
and C <: From
, then C <: To
(subtyping is transitive)
Attributes
Inherited from:
Source
Composes two instances of Function1
in a new Function1
, with this function applied last.
Composes two instances of Function1
in a new Function1
, with this function applied last.
Type parameters
A
the type to which function g
can be applied
Value parameters
g
a function A => T1
Attributes
Returns
a new function f
such that f(x) == apply(g(x))
Definition Classes
Inherited from:
Source
Returns a string representation of the object.
Returns a string representation of the object.
The default representation is platform dependent.
Attributes
Returns
a string representation of the object.
Definition Classes
Inherited from:
Source
In this article