2017-02-08 27 views
0

我有一个特质在斯卡拉如下实例化对象与类名和参数

trait Ingredients 
case class Water(temperature: Int, litters: Double) extends Ingredients 

此外,我已经从一个文件读取一个字符串:

"Water(temperature=15, litters=50)" 

我想知道可以通过仅传递字符串来实例化此类中的对象。

回答

0

Twitter的的Util评价仪会做到这一点:https://github.com/twitter/util

val eval = new Eval 
val w = eval[Water]("Water(temperature=15, litters=50)") 

的评估代码需要的Scala代码一个完整的单元。例如,如果Water位于包中,那么该包需要以评估字符串的形式导入,否则需要在构造函数中使用完整的包引用。

+0

您能举个例子吗?我无法找到哪个部分让我做我想做的事。 –

+0

当我尝试所有我得到的是'编译器异常错误:第1行:找不到:值水' –

+0

您可能已经在包中定义了'Water'。如果是这样的话,你需要在你的字符串'com.mypackage.Water(...)'中包括包名,否则在执行之前在这个字符串中添加一条import语句。该字符串需要完全解析和有效的Scala代码。 –