Слик где / фильтр / с фильтром
В 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 ответ:
Согласно источнику все эти методы одинаковы:
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
заявление.