У меня есть следующий код в 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)