Слик где / фильтр / с фильтром


В slick (1.0), в чем разница между doing .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 7

1 ответ:

Согласно источнику все эти методы одинаковы:

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

Filter - это распространенный метод фильтрации коллекций в scala. В коллекциях есть метод filter , Option, Future, Try и так далее.

WithFilter существует для for comprehensions. if утверждение В для понимания переводится в вызов withFilter.

Я предполагаю , где добавляется по аналогии с SQL where заявление.