Slick where / filter / withFilter

时间:2013-06-05 15:25:05

标签: scala slick

在光滑(1.0)中,在表格上执行.where().filter().withFilter()之间有什么区别?

API中,他们有类似的签名,但不清楚它们有何区别:

def filter[T]            (f: (E) ⇒ T)(implicit wt:   CanBeQueryCondition[T]): Query[E, U]
def where[T <: Column[_]](f: (E) ⇒ T)(implicit arg0: CanBeQueryCondition[T]): Query[E, U]
def withFilter[T]        (f: (E) ⇒ T)(implicit arg0: CanBeQueryCondition[T]): Query[E, U]

1 个答案:

答案 0 :(得分:9)

根据source,所有这些方法都是相同的:

def withFilter[T : CanBeQueryCondition](f: E => T) = filter(f)
def where[T <: Column[_] : CanBeQueryCondition](f: E => T) = filter(f)

过滤器是在scala中过滤集合的常用方法。集合中有filter方法,OptionFutureTry等等。

{p> withFilter 适用于for comprehensions。理解中的if声明已转换为withFilter的调用。

我猜其中SQL where声明类似。