条件作为理解循环的函数

时间:2017-08-04 07:35:52

标签: scala slick

我想在for-comprehension循环中使用自定义条件函数进行光滑查询:

def findNewsletterUsers(f: (NewsletterUsers, NewsletterStatuses) => Boolean) = {
    for {
      u <- NewsletterUsers
      s <- NewsletterStatuses if (u.statusId === s.id)
      d <- NewsletterDelays if (u.delayId === d.id)
      if f(u, s)
    } yield (u, d, s)
  }

我想在上面一层填充实际自定义条件的情况下调用此方法。类似的东西:

findNewsletterUsers((nu, ns) => ns.name == 'C')

这个调用虽然没有返回任何行(但它应该)。有没有办法让它以这种方式运作?

祝你好运

1 个答案:

答案 0 :(得分:1)

轻松搞错是使用==运算符而不是===运算符。

在您的情况下,您使用函数(nu, ns) => ns.name == 'C')。此函数始终返回false,因为ns.name不是Char而是Rep[Char]

要解决此问题,您只需将==替换为===,光滑会自动将文字字符'C'提升为Rep[Char]