我可以转换模板expression式中的字符串还是kotlin中的lambdaexpression式?

我可以转换模板expression式中的字符串还是kotlin中的lambdaexpression式?

val tm = "x = $"+"x" val fn: (x: String) -> String = { it -> tm} val str = fn("This is X!!!") 

需要得到

x =这是X!

为什么?:您可以接收模板,例如,从数据库PS:或您的建议

Kotlin模板在编译时被评估 – 所以这是行不通的。

你应该使用第三方模板引擎。

Freemarker就是这样一种引擎,其格式非常类似于Kotlin自己的模板格式:

 val tm = "x = \${x}" fun fn (x: String) : String { val t = Template("name", StringReader(tm), Configuration(Configuration.VERSION_2_3_26)) val out = StringWriter() t.process(mapOf("x" to x) ,out) return out.toString() } println (fn("This is X!!!")) // x = This is X!!! 

两个注释:

  • 你将无法在freeMarker上使用"$x" ,只有"${x}"
  • $符号可以使用\$在Kotlin字符串中转义