我想在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')
这个调用虽然没有返回任何行(但它应该)。有没有办法让它以这种方式运作?
祝你好运
答案 0 :(得分:1)
轻松搞错是使用==
运算符而不是===
运算符。
在您的情况下,您使用函数(nu, ns) => ns.name == 'C')
。此函数始终返回false,因为ns.name不是Char
而是Rep[Char]
。
要解决此问题,您只需将==
替换为===
,光滑会自动将文字字符'C'
提升为Rep[Char]
。