这个问题与(为什么 Scala 中没有字符串插值?)有关,但更具体地处理多行字符串。
我刚刚接受了 Martin 对简单字符串占位符的建议,其中 msg = "Hello {name}!"
在今天的 Scala 中,可以像这样表示,没有太大区别: msg = "Hello"+name+"!"
但是,我认为这种方法不适用于多行字符串。而且,在某些情况下,它可能会鼓励其他有利于可读性的不良做法。请注意,在 Scala Play ANORM 数据库映射中,框架如何尝试在普通 SQL 中保留可读性(使用占位符),但以复制 {countryCode} 变量名称和以非类型安全的方式为代价,请参阅... .on("国家代码" -> "FRA")
SQL(
"""
select * from Country c
join CountryLanguage l on l.CountryCode = c.Code
where c.code = {countryCode};
"""
).on("countryCode" -> "FRA")
此外,假设 Scala 没有改变来解决这个问题,那么使用内联 XML 会有什么影响?性能,内存等如何:
val countryCode = "FRA"
SQL(<c>
select * from Country c
join CountryLanguage l on l.CountryCode = c.Code
where c.code = {countryCode};
</c>.text)