我的scala表达式存储在String变量中:
val myExpr = "(xml \ \"node\")"
我该如何执行此操作?
s"${myExpr}"
现在它只给我字符串内容
我想要实现的是以下列形式解析用户字符串输入:
"/some/node/in/xml"
并在Scala中获取相应的节点:
(xml \ "node" \ "in" \ "xml")
答案 0 :(得分:1)
对于REPL,我的init包括:
implicit class interpoleter(val sc: StringContext) {def i(args: Any*) = $intp interpret sc.s(args: _*) }
用哪个
scala> val myExpr = "(xml \\ \"node\")"
myExpr: String = (xml \ "node")
scala> val xml = <x><node/></x>
xml: scala.xml.Elem = <x><node/></x>
scala> i"${myExpr}"
res3: scala.xml.NodeSeq = NodeSeq(<node/>)
res2: scala.tools.nsc.interpreter.IR.Result = Success
因为代码真的只是一个字符串,就像其他一切一样吗?
答案 1 :(得分:0)
可能在最近的scala版本中有一些惯用的方法,但你可以使用Twitter's Eval:
val i: Int = new Eval()("1 + 1") // => 2