Sunday, October 18, 2015

Implicit class (enrich my library pattern)

Implicit class allows you to (appear to) add new methods into an existing class (something written by someone else, or something you don’t want to change):

object Test {

  import Example._

  implicit class AwsomeString(val s: String) {
    def awesome = s + " Awesome!"
  }
  "Scala is".awesome
}

Implicit value class is similar, but it extends AnyVal:


object Test {

  import Example._

  implicit class AwsomeString(val s: String) extends AnyVal {
    def awesome = s + " Awesome!"
  }
  "Scala is".awesome
}

This is said to have performance benefits.

0 comments: