条件作为 for 理解循环中的函数

Condition as function in for comprehension loop

我想在我的 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')

此调用 returns 没有行(虽然它应该)。有什么办法让它这样工作吗?

此致

在 slick 中一个容易犯的错误是使用 == 运算符而不是 === 运算符。

在您的情况下,您使用函数 (nu, ns) => ns.name == 'C')。这个函数总是 returns false 因为 ns.name 不是 Char 而是 Rep[Char].

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