Scala是否与Haskell的Prelude.read等效?

Bil*_*ill 2 scala

在Haskell中,我可以编写read "(1,2)"并取回元组(1,2).在Scala有什么办法吗?我想我正在寻找的是访问scala解释器中的解析器.

jac*_*aco 11

我试过在scala.tools.nsc中逛逛?

是否足以满足您的需求(或者至少是一个良好的起点)?

scala> val interpreter = new tools.nsc.Interpreter
interpreter: scala.tools.nsc.Interpreter = scala.tools.nsc.Interpreter@522c5afb

scala> interpreter interpret "(3, 5)"
res0: (Int, Int) = (3,5)
res139: scala.tools.nsc.InterpreterResults.Result = Success

scala> interpreter interpret "1 to 10 toList"
res1: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
res140: scala.tools.nsc.InterpreterResults.Result = Success
Run Code Online (Sandbox Code Playgroud)

[编辑:似乎不推荐使用tools.nsc.Interpreter.现在有一个tools.nsc.interpreter包]