String = { it -> tm}-6ren">
gpt4 book ai didi

lambda - 我可以在Kotlin中转换模板表达式中的字符串或lambda表达式吗?

转载 作者:行者123 更新时间:2023-12-02 12:48:34 25 4
gpt4 key购买 nike

我可以在Kotlin中转换模板表达式中的字符串或lambda表达式吗?

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

需要得到

x = This is 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字符串中的
  • \$符号转义

  • 关于lambda - 我可以在Kotlin中转换模板表达式中的字符串或lambda表达式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45799829/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com