[T <: U]
introduces a type variable with an upper bound constraint. T <:< U
is a type, and a value of this type is a proof that T
is a subtype of U
the latter can be useful if T
is introduced with no such constraint, when some operations require the upper bound. (Kudos to @tpolecat)
def firstLast[A, C](it: C)(implicit ev: C <:< Seq[A]) = {
(it.head, it.tail)
}
firstLast(List(1, 2, 3, 4))
class Pair[T](val v1: T, val v2: T) {
def smaller(implicit ev: T <:< Ordered[T]) = {
if(v1 < v2) v1 else v2
}
}
0 comments:
Post a Comment