Могу ли я преобразовать строку в выражение шаблона или выражение лямбда в kotlin?

Могу ли я преобразовать строку в выражение шаблона или выражение лямбда в kotlin?

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

Нужно получить

x = Это Х !!!

Почему ?: Вы можете получать шаблоны, например, из базы данных PS: или ваши предложения

Шаблоны Kotlin оцениваются во время компиляции – так что это не сработает.

Вы должны использовать сторонний шаблонный движок.

Freemarker – такой движок с форматом, очень похожим на собственный шаблонный формат Котлина:

 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!!! 

Две заметки:

  • Вы не сможете использовать "$x" на freeMarker, только "${x}"
  • Знак $ может быть экранирован в строке Kotlin с использованием \$