Scala 对象用户扩展了Magic[User]()。无法编译使用(";users";)
使用Anorm时,我希望为User case类使用不同的表名:Scala 对象用户扩展了Magic[User]()。无法编译使用(";users";),scala,playframework,anorm,Scala,Playframework,Anorm,使用Anorm时,我希望为User case类使用不同的表名: object User extends Magic[User]().using("users") 但我得到以下编译错误: 无法编译文件/app/models/User.scala。引发的错误为:“;”应为“”,但找到“”。 对象用户扩展MagicUser↓.使用(“用户”) 这是Anorm的bug吗?显然不是bug,您的代码不是有效的scala。你可以这样做: lazy val User = new Magic[User].usi
object User extends Magic[User]().using("users")
但我得到以下编译错误:
无法编译文件/app/models/User.scala。引发的错误为:“;”应为“”,但找到“”。
对象用户扩展MagicUser↓.使用(“用户”)
这是Anorm的bug吗?显然不是bug,您的代码不是有效的scala。你可以这样做:
lazy val User = new Magic[User].using("users")
(约定应为小写“user”,大写字母保留,以便与预期代码等效)
对象是声明,而不是表达式。对象声明是
object ObjectName extends Ancestor(ancestor_constructor_arguments) {
// body: data, method and initialization code
}
大多数零件是可选的
您必须通过构造函数参数或对象体中的初始化代码进行自适应
由于您没有向类Magic添加任何行为,因此似乎不需要声明对象 可能play scala文档有错误。但是我的User对象应该是case类User的伴随对象,否则lazy val用户必须放在包对象中?还有更优雅的解决方案吗?如果您需要它成为一个对象,您必须通过构造函数或初始化代码。方法返回一个新实例,所以Magic很可能是不可变的,所以它可以在构造函数处完全初始化。我看了一下(第227行)。实际上,它在构造函数中使用tableName,并封装在一个选项中。所以你可以做对象用户扩展魔术[用户](一些(“用户”))