Scala 2.10 ma eksperymentalne wsparcie dla makr, które podobnie jak wyrafinowane generowanie kodu kompilacji. Aby uzyskać więcej informacji, patrz here.
Istnieje kilka przykładów zabawy na macrocosm git repozytorium Jason Zaugg, a biblioteka SLICK który jest ewolucja DSL ScalaQuery SQL umożliwiającej typu bezpieczne bazy danych (i kolekcji) zapytań być wyrażone w LINQ-jak sposób.
I ten przykład, z biblioteki expecty twierdzenie:
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"
}
Uzyskano
java.lang.AssertionError:
person.say(word1, word2) == "pong pong"
| | | | |
| | ping pong false
| ping pong
Person(Fred,42)
Tak, jest to możliwe. Jestem prawie pewien, że istnieją wtyczki, które to robią. Czy przejrzałeś listę istniejących wtyczek? –