3

我想做java的字符串模板所做的事情,但是在scala中。但是,此库不适用于案例类:

case class Obj(str:String)
val st = new ST("xx $obj.str$ xx",'$','$')
st.add("obj",Obj("replacement"))
st.render()  //returns "xx  xx"

ST 试图通过反射找到属性“str”,但它不适用于 scala。

没有ST如何实现?

4

2 回答 2

0

尝试像这样创建您的课程:

    case class Obj(@BeanProperty str: String)

这是 scala 文档:http ://www.scala-lang.org/api/current/#scala.beans.BeanProperty

您还可以查看作为 StringTemplate 接口的项目 Scalasti:http ://software.clapper.org/scalasti/

于 2016-10-09T18:39:46.503 回答
-1

它内置在语言中(以可扩展的方式)。只是

val obj = Obj("replacement")
s"xx ${obj.str} xx"

里面可以有任何 Scala 表达式${...}

有关更多信息,请参阅http://docs.scala-lang.org/overviews/core/string-interpolation.html(或仅搜索“Scala 字符串插值”)。

于 2016-10-09T17:30:59.800 回答