Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala是否与Haskell';读什么?_Scala - Fatal编程技术网

Scala是否与Haskell';读什么?

Scala是否与Haskell';读什么?,scala,Scala,在Haskell中,我可以编写读取“(1,2)”并返回元组(1,2)。在Scala中有什么方法可以做到这一点吗?我想我要找的是在scala解释器中访问解析器。您可能对scala编译器API感兴趣。您可能需要编译源代码并运行它。这是在Scala解释器中如何完成的 记住这些问题: 它可能很慢 Ït可能是多线程应用程序中的瓶颈。加载类AFAIK需要同步(因为JIT等) 它可能是不安全的。您可能对设置JVM安全限制感兴趣 有一个关于Scala编译器()的信息,但它可能已经过时:如果您需要详细的信息,

在Haskell中,我可以编写
读取“(1,2)”
并返回元组
(1,2)
。在Scala中有什么方法可以做到这一点吗?我想我要找的是在
scala
解释器中访问解析器。

您可能对scala编译器API感兴趣。您可能需要编译源代码并运行它。这是在Scala解释器中如何完成的

记住这些问题:

  • 它可能很慢
  • Ït可能是多线程应用程序中的瓶颈。加载类AFAIK需要同步(因为JIT等)
  • 它可能是不安全的。您可能对设置JVM安全限制感兴趣
有一个关于Scala编译器()的信息,但它可能已经过时:如果您需要详细的信息,您可能需要下载源代码并生成scaladoc

我不知道你使用它的动机,但是如果你不需要Scala,你也可以对它感兴趣


如果您只想加载数据结构,则应该考虑其他方法,例如,可以使用或不支持的JavaJSON库。该库允许您序列化/反序列化案例类。

您是否尝试在scala.tools.nsc中浏览

这样的事情是否足以满足你的需要(或者至少是一个好的起点)


[编辑:tools.nsc.Interpreter似乎已被弃用。现在有一个tools.nsc.Interpreter包]

谢谢!编译器本身可能太重了。我希望能够读入类似“[Foo(3,3),“Foo”,4]”的内容,并获取Scala数据结构。有没有一种不用编译器API就能做到这一点的方法?如果你只想读取一个结构,那么使用Lift JSON反序列化怎么样?如果JSON不是你的毒药,那么试试scala中的解析器支持,它的设计正是以这种方式工作的。还可以看看
eval
。您必须提供类型,但它特别有用,因为它返回表达式结尾的任何类型。
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