Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.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 对象用户扩展了Magic[User]()。无法编译使用(";users";)_Scala_Playframework_Anorm - Fatal编程技术网

Scala 对象用户扩展了Magic[User]()。无法编译使用(";users";)

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

使用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].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,并封装在一个选项中。所以你可以做对象用户扩展魔术[用户](一些(“用户”))