我有戏! 2 应用程序和一些跨模型重用的函数。我想将它们放在 models
包对象中,如下例所示
import java.util.Date
package object models {
case class RichDate(d: Date) {
def timestamp: Long = d.getTime / 1000
}
implicit def enrich(d: Date): RichDate = new RichDate(d)
}
这样我在模型中的任何地方都有一个日期字段,我可以编写myDate.timestamp
.ù
这可以编译,甚至可以在单元测试中运行。但由于某种原因,当我运行实际应用程序时,我收到执行异常 [NoSuchMethodError: models.package$.enrich(Ljava/util/Date;)Lmodels/package$RichDate;]
Is there a reason why the above should not work in a Play! application, while being valid Scala?
最佳答案
我也遇到过这个问题,结果发现这种奇怪的行为是由于包对象模型
already being defined in the framework 。这基本上使得框架用户无法使用包对象模型
。我的解决方案是将我的库放入实用程序对象(例如 utils.DateUtils)中,然后在适当的时候导入它们。
关于Scala 封装对象并 Play ! 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12586384/