如何在Scala中评估字符串val?

时间:2015-06-04 21:59:47

标签: scala

我的scala表达式存储在String变量中:

val myExpr = "(xml \ \"node\")"

我该如何执行此操作?

s"${myExpr}" 

现在它只给我字符串内容

我想要实现的是以下列形式解析用户字符串输入:

"/some/node/in/xml"

并在Scala中获取相应的节点:

(xml \ "node" \ "in" \ "xml")

2 个答案:

答案 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
相关问题