作者:果丽珍 | 来源:互联网 | 2023-02-03 18:18
假设我有以下Kotlin代码:
fun main(args: Array) {
val a = "test"
println(args.first())
}
如果我传入一个参数$a
,输出将是$a
.据我了解,Kotlin通过在编译时生成输出代码来处理String模板,可能是使用StringBuilder.有没有办法在当前上下文中评估关于模板的源代码中没有的字符串?字符串模板非常有用,能够评估来自动态上下文的表达式(例如配置文件)会很棒,但据我所知,这是不可能的.
缺乏这一点,对此有什么好处?调用脚本引擎?
1> hotkey..:
如果您需要以这种方式评估任意表达式,那么是的,您需要一个脚本引擎.Kotlin有一个可以使用的JSR 223实现,请参阅此处kotlin-jsr223-*
的示例(项目).
这是一个基本的用法示例:
val engine = ScriptEngineManager().getEngineByExtension("kts")!!
engine.eval("val x = 3")
val res = engine.eval("x + 2")
Assert.assertEquals(5, res)
代码取自KotlinJsr223ScriptEngineIT.kt
,并记得通过配置服务META-INF