Play框架的SQL运算符的编译时魔术是如何工作的?

时间:2014-12-01 16:49:52

标签: scala playframework

我对Scala代码的编译时安全性印象非常深刻,如下所示:

val searchCountryPrefix:String = ....

val sql = SQL"""
  select
    cn.name, cn.indepyear, c.name
  from
    city c
    join country cn on c.id = cn.capital
  where
    cn.name like $searchCountryPrefix
  """

...因为如果我在字符串中输入拼写错误,例如用错了:

  ...
  where
    cn.name like $searchCountyPrefix -- instead of country, it says county
  """

...然后Scala编译器捕获并报告它。

除了Lisp之外,我从未见过任何其他语言的编译时魔术 - Play框架是如何做到这一点的?

更重要的是,我可以在自己的库中进行这种神奇的编译时字符串检查吗?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

这不是Play特有的,它是Scala的一个功能。您可以在此处了解有关字符串插值的更多信息:http://docs.scala-lang.org/overviews/core/string-interpolation.html