The ones I can think of are Existential types def foo(l: List[Option[_]]) = ... Higher kinded type parameters case class A[K[_],T](a: K[T]) Ignored variables val _ = 5 Ignored parameters List(1, 2, 3) foreach { _ => println("Hi") } Ignored names of self types trait MySeq { _: Seq[_] => } Wildcard patterns Some(5) match { case Some(_) => println("Yes") } Wildcard patterns in interpolations "abc" ma
![What are all the uses of an underscore in Scala?](https://cdn-ak-scissors.b.st-hatena.com/image/square/98d6f053a97a87156775f60757c60865d0f2c47d/height=288;version=1;width=512/https%3A%2F%2Fcdn.sstatic.net%2FSites%2Fstackoverflow%2FImg%2Fapple-touch-icon%402.png%3Fv%3D73d79a89bded)