我想做的是java的字符串模板,但在斯卡拉。然而,這個庫不適用於case類: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的情況下實現它?
我想做的是java的字符串模板,但在斯卡拉。然而,這個庫不適用於case類: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的情況下實現它?
它內置於語言中(以可擴展的方式)。只需要
val obj = Obj("replacement")
s"xx ${obj.str} xx"
您可以在${...}
內部有任何Scala表達式。
請參閱http://docs.scala-lang.org/overviews/core/string-interpolation.html(或者只是搜索「斯卡拉字符串插值」)以獲取更多信息。
嘗試創建自己的階級是這樣的:
case class Obj(@BeanProperty str: String)
這裏是斯卡拉DOC:http://www.scala-lang.org/api/current/#scala.beans.BeanProperty
您也可以看看這個項目Scalasti這是StringTemplate的一個接口:http://software.clapper.org/scalasti/
「字符串模板」是做什麼的? – pedrofurla