Интерполяция строк в Scala - PullRequest
0 голосов
/ 20 января 2020

У меня есть следующий код в scala,

def string_concatenation(strs: String*): String = {
  var res = ""
  for (x <- strs) {
    res += x
  }
  res
}

val strA = "Hello"
val strB = "World"
val rule1: String = "string_concatenation(strA, strB)"
val res1 = s"$rule1"
println("Result 1: " + res1)

val res2 = s"${string_concatenation(strA, strB)}"
println("Result 2: " + res2)

Когда я запускаю вышеуказанный код, я получаю следующий вывод:

Result 1: string_concatenation(strA, strB)
Result 2: HelloWorld

Мне нужно Строка "rule1", которая будет оценена, чтобы дать "HelloWorld".

Есть ли способ, которым я могу достичь этого в scala (или), используя функции искры в scala?

Я пробовал следующие методы, но безрезультатно:

Метод 1:

val res3 = s"${s"$rule1"}"
println("Result 3: " + res3)

Вывод:

Result 3: string_concatenation(strA, strB)

Метод 2:

import scala.reflect.runtime.universe._
import scala.reflect.runtime.currentMirror
import scala.tools.reflect.ToolBox

val toolbox = currentMirror.mkToolBox()
val rule2 = q"$rule1"
val res4 = toolbox.compile(rule2)()
println("Result 4: " + res4)

Выход:

Result 4: string_concatenation(strA, strB)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...