重载“apply”方法时:光滑的错误消息“值元组不是对象的成员”

2024-04-24

我需要有能力创造一个User对象通过提供除id在某些情况下,使得User对象负责为自己分配一个自动生成的值。

为此,我重载了伴随对象中的 apply 方法,如下所示。但这会导致编译时错误:value tupled is not a member of object.

StackOverflow 和其他博客上提到的解决方案不起作用,例如:http://queirozf.com/entries/slick-error-message-value-tupled-is-not-a-member-of-object http://queirozf.com/entries/slick-error-message-value-tupled-is-not-a-member-of-object

case class User(id: Long, firstName: String, lastName: String, mobile: Long, email: String)

object User {
  private val seq = new AtomicLong

  def apply(firstName: String, lastName: String, mobile: Long, email: String): User = {
    User(seq.incrementAndGet(), firstName, lastName, mobile, email)
  }
}

class UserTableDef(tag: Tag) extends Table[User](tag, "user") {

  def id = column[Long]("id", O.PrimaryKey, O.AutoInc)
  def firstName = column[String]("first_name")
  def lastName = column[String]("last_name")
  def mobile = column[Long]("mobile")
  def email = column[String]("email")

  override def * =
    (id, firstName, lastName, mobile, email) <> (User.tupled, User.unapply)

}

你的问题的根源是超载apply def.

tupled不适用于case class's with less than 2 parameters or overloaded apply.

就光滑而言*(或全部)映射和<>关心的是,它应该是这样的,

def * = (tupleMember1, tupleMember2, ...) <> (func1, func2)

这样,

  • func1接受那个元组(tupleMember1, tupleMember2, ...)作为输入并返回映射类/案例类的实例。
  • func1获取映射类/案例类的实例并返回该元组(tupleMember1, tupleMember2, ...).

所以你可以提供任何满足这些要求的功能。

case class User(id: Long, firstName: String, lastName: String, mobile: Long, email: String)

object User {
  private val seq = new AtomicLong

  def apply(firstName: String, lastName: String, mobile: Long, email: String): User = {
    User(seq.incrementAndGet(), firstName, lastName, mobile, email)
  }

  def mapperTo(
    id: Long, firstName: String,
    lastName: String, mobile: Long, email: String
  ) = apply(id, firstName, lastName, mobile, email)

}

class UserTableDef(tag: Tag) extends Table[User](tag, "user") {

  def id = column[Long]("id", O.PrimaryKey, O.AutoInc)
  def firstName = column[String]("first_name")
  def lastName = column[String]("last_name")
  def mobile = column[Long]("mobile")
  def email = column[String]("email")

  override def * =
    (id, firstName, lastName, mobile, email) <> ((User.mapperTo _).tupled, User.unapply)

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

重载“apply”方法时:光滑的错误消息“值元组不是对象的成员” 的相关文章

随机推荐

  • 修复重载运算符“+”的使用不明确?

    我使用 C 11 标准编写了以下代码 h file include Auxiliaries h class IntMatrix private Dimensions dimensions int data public int size c
  • Cocoa 脚本:返回“null”与“缺失值”

    看来 AppleScript 知道这个特殊值null 如何从基于 Cocoa 脚本的应用程序中为可编写脚本的属性返回这样的值 如果我回来nil NULL or NSNull对于来自我的基于 Cocoa 脚本的应用程序的可编写脚本的属性 ge
  • Bootstrap 右栏位于移动视图顶部

    我有一个像这样的引导页面 div class row div class col md 6 A div div class col md 6 B div div 好像 A B 因此 如果我在移动设备上查看它 A 列位于顶部 但我希望 B 列
  • 正则表达式大于零,保留 2 位小数

    我需要一个正则表达式来表示最多两位小数大于零的数值 并且个数列中可能有也可能没有零 我还应该添加 整数就可以了 请参阅下面的一些内容 但可能存在前导或尾随空格 Good values 1 0 1 1 12 123 12 92 092 092
  • 修复无效 JSON 的正则表达式

    我正在对服务进行 API 调用 但它返回无效的 JSON photo url 字段没有将 url 封装在引号中 我将它作为字符串 并尝试编写一个正则表达式来在 url 周围添加引号 我使用 Titanium 在 Javascript 中完成
  • XAMPP - 对于表“users”,用户“@”localhost”的 SELECT 命令被拒绝

    不久前 我删除并弄乱了 XAMPP 中的一些功能 我重新安装了它 并移动 重命名了我的文件夹和所有其他文件 所以我现在有了一个新的空的 xampp 目录 但是 当我尝试使用任何数据库功能时 它会出现如下错误 SELECT command d
  • Redis hash写入速度非常慢

    我面临一个非常奇怪的问题 使用 Redis 时 我的写入速度非常糟糕 在理想的情况下 写入速度应该接近 RAM 上的写入速度 这是我的基准 package redisbenchmark import redis clients jedis
  • AngularFireDatabase 不检索数据

    每当我使用 afDB list path 方法时 我都会得到以下信息 console log this items https i stack imgur com RtwkN png 我有这个例子作为我的 firebase 数据库 列表文件
  • 如何在ZF2控制器中获取baseUrl?

    在我的 zf2 控制器中 我想检索应用程序基本 URL 例如http example com 我尝试了以下调用 但它返回一个空字符串 this gt request gt getBasePath 我怎样才能得到http example co
  • QNetworkManager 默认情况下是否接受压缩回复?

    我在用Q网络管理器 https doc qt io qt qnetworkaccessmanager html从服务器获取文件 但是我不知道文件在传输过程中是否使用标准 gzip 压缩进行压缩 如果不是 如何让它们下载压缩文件 我该如何去检
  • C# 中密封类的扩展方法

    我有这个sealed class public sealed class A public string AName get set 有人可以为它编写一个扩展方法 如下所示 public static class Extensions pu
  • 如果我解决了冲突,Git 的责备会改变吗?

    我试图弄清楚合并冲突是否导致了错误 但我遇到了困难 因为我不清楚冲突解决如何影响git blame 假设我在 master 中有一个文件 a b c 我在master中修改 a d c 但同事也是如此 他们在一个单独的分支中以不同的方式对其
  • 如何将输入作为 stdin 通过管道传输到 src_block ?

    考虑 org babel 中的以下 perl 片段 它使用
  • 点击时反应获取id值

    我有以下内容 var SingleEditableModule React createClass show overlay function e console log e target attr id render function v
  • Asp.net core 2.0条件服务或条件连接字符串

    我正在使用 Asp net core 2 0 开发 Web api 现在我需要的是使用不同的连接字符串 这些字符串将在用户的标头中指定 我以前见过这个 不是直接关于这个问题 app Use async context next gt if
  • 在 ArrayAdapter 中显示自定义对象 - 简单的方法?

    我正在尝试显示蓝牙设备列表ArrayAdapter 并且想要覆盖适配器的默认功能以显示对象toString 我知道有一些解决方案可以扩展getView 方法 但我真的觉得这太复杂了 我想要的只是覆盖要显示的字符串的构建方式 对于蓝牙设备 这
  • 在 WPF 中创建平面按钮

    如何在wpf中制作按钮平面样式 我已经尝试过 BasedOn 属性 但它不起作用 这里使用已经定义的工具栏按钮样式更简单的解决方案
  • 基于任务的编程:#pragma omp task 与 #pragma omp parallel for

    考虑到 void saxpy worksharing float x float y float a int N pragma omp parallel for for int i 0 i lt N i y i y i a x i And
  • 带有文本密码输入类型的 EditText,但没有软键盘

    我想用 android inputType textPassword 创建一个 EditText 但是我也不想使用软键盘进行输入 所以我尝试将 InputMethod 设置为 null 但这也会禁用将密码渲染替换为 的 textPasswo
  • 重载“apply”方法时:光滑的错误消息“值元组不是对象的成员”

    我需要有能力创造一个User对象通过提供除id在某些情况下 使得User对象负责为自己分配一个自动生成的值 为此 我重载了伴随对象中的 apply 方法 如下所示 但这会导致编译时错误 value tupled is not a membe