加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 使用Slick重构期间类型不匹配

发布时间:2020-12-16 18:06:11 所属栏目:安全 来源:网络整理
导读:我有以下一段代码我想制作DRYer: def createAdmin(/* ... */): Future[Int] = db.run { { (users returning users.map(_.id)) += Account(0,/* ... */) } flatMap { id = admins += Admin(userId = id,/* ... */) } }def createStandardUser(/* ... */): Fu
我有以下一段代码我想制作DRYer:

def createAdmin(/* ... */): Future[Int] =
  db.run {
    {
      (users returning users.map(_.id)) += Account(0,/* ... */)
    } flatMap { id =>
      admins += Admin(userId = id,/* ... */)
    }
  }

def createStandardUser(/* ... */): Future[Int] =
  db.run {
    {
      (users returning users.map(_.id)) += Account(0,/* ... */)
    } flatMap { id =>
      standardUsers += StandardUser(userId = id,/* ... */)
    }
  }

编译好.但如果我将两者合并到以下内容中:

def createUser(role: String)(/* ... */): Future[Int] =
  db.run {
    {
      (users returning users.map(_.id)) += Account(0,/* ... */)
    } flatMap { id =>
      role match {
        case "admin" =>
          admins += Admin(userId = id,/* ... */)
        case "standard" =>
          standardUsers += StandardUser(userId = id,/* ... */)
      }
    }
  }

我收到以下类型不匹配错误:

[error]  found   : Long => slick.dbio.DBIOAction[Int,slick.dbio.NoStream,Nothing]
[error]  required: Long => slick.dbio.DBIOAction[Int,E2]
[error]       } flatMap { id =>
[error]                      ^
[error] one error found

我似乎无法弄清楚为什么.有人可以为我照亮这个吗?

解决方法

编译器无法正确找出使用的效果类型.作为一种解决方法,您应该能够通过指定使用的类型为其提供一些帮助,例如:在flatMap操作中,这将是

flatMap[Int,NoStream,Effect.Write] { id =>

在你的情况下.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读