Skip to content

Instantly share code, notes, and snippets.

@kamijin-fanta
Created March 21, 2017 10:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kamijin-fanta/b1047ca659b9a517c1ad87e2bb7ff19a to your computer and use it in GitHub Desktop.
Save kamijin-fanta/b1047ca659b9a517c1ad87e2bb7ff19a to your computer and use it in GitHub Desktop.
scala> :past
// Entering paste mode (ctrl-D to finish)

import scala.reflect.runtime.universe._
class A {}
class B extends A {}
class C extends A {}
def check[T: TypeTag](list: Seq[T]) = {
  list match {
    case v if typeOf[T] =:= typeOf[B] => println("Seq[B]")
  }
}

// Exiting paste mode, now interpreting.

import scala.reflect.runtime.universe._
defined class A
defined class B
defined class C
check: [T](list: Seq[T])(implicit evidence$1: reflect.runtime.universe.TypeTag[T])Unit

scala> check(Seq(new B))
Seq[B]

scala> check(Seq(new C))
scala.MatchError: List(C@2764ad8a) (of class scala.collection.immutable.$colon$colon)
  at .check(<pastie>:27)
  ... 27 elided
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment