Or "pimp my library".
I was pair programming with a Scala guru when he saw me creating a function to interrogate a String. He took my code and re-wrote as something like this:
object MyImplicits {
implicit class MyString(val string: String) {
def startsWithD: Boolean = string.startsWith("D")
}
}
object MyImplicitsMain {
import com.phenry.scala.MyImplicits._
def main(args: Array[String]) = {
val aString = "Does this start with D?"
println(aString.startsWithD) // this returns true
}
}
Note that implicits can live in objects and packages (as they basically hold what Java programmers would recognise as statics) but not class or traits.
One is advised to be careful with implicits, however. "Implicits are very powerful but you should use them with care," said Scala's creator.
No comments:
Post a Comment