Могу ли я преобразовать строку в выражение шаблона или выражение лямбда в 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 с использованием \$
  • Почему у Kotlin есть два синтаксиса для lambdas / анонимных функций?
  • Лямбда в выражении типа множественного типа
  • Почему Kotlin не может вывести следующий аргумент лямбда (после преобразования Java -> Kotlin)?
  • Переопределение нескольких методов интерфейса в лямбда-выражениях Котлина
  • Почему я могу использовать имя выражения лямбда, но не имя функции?
  • Тип функции Kotlin вместо функционального интерфейса лямбда
  • Параметры абстрактного класса и лямбда
  • Функция расширения kotlin не понимает, как эта вещь работает
  • Что такое Лямбда с приемником?
  • Как опустить параметры лямбда в Котлин?
  • LMAX Disruptor с Kotlin: нельзя использовать лямбда?
  • Давайте будем гением компьютера.