2013-06-05 14 views
7

W stanie gładkim (1.0), jaka jest różnica między wykonaniem .where(), .filter() i .withFilter() na stole?Zwykłe miejsce/filtr/z filtrem

W API mają podobny podpis, ale nie jest jasne, w jaki sposób różnią się one:

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] 

Odpowiedz

9

Według source wszystkich tych metod są takie same:

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

filtr jest wspólna metoda filtrowania kolekcji w scala. Istnieje metoda filter w kolekcjach, Option, Future, Try i tak dalej.

zFiltrem jest dostępny dla for comprehensions. if Wyrażenie dla wyrażenia przetłumaczono na wywołanie withFilter.

Domyślam się , gdzie jest dodawany przez analogię do oświadczenia SQLwhere.