Scala 2.10 tiene soporte experimental para macros que genera generación de código sofisticado en tiempo de compilación. Ver here para más detalles.
Hay algunos ejemplos de la diversión en repositorio git de Jason Zaugg macrocosm, y la biblioteca SLICK que es una evolución del DSL ScalaQuery SQL que permite consultas con seguridad de tipos de base de datos (y la colección) que se expresa de una manera LINQ similares.
Y este ejemplo, de la biblioteca expecty afirmación:
import org.expecty.Expecty
case class Person(name: String = "Fred", age: Int = 42) {
def say(words: String*) = words.mkString(" ")
}
val person = Person()
val expect = new Expecty()
...
val word1 = "ping"
val word2 = "pong"
expect {
person.say(word1, word2) == "pong pong"
}
Rendimiento:
java.lang.AssertionError:
person.say(word1, word2) == "pong pong"
| | | | |
| | ping pong false
| ping pong
Person(Fred,42)
Sí, es posible. Estoy bastante seguro de que hay complementos que lo hacen. ¿Has buscado en la lista de complementos existentes? –