7

.where()在 slick (1.0) 中, doing.filter().withFilter()on a Table 有什么 区别?

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]
4

1 回答 1

9

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

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. iffor comprehensions 中的语句被翻译为 call of withFilter

我猜想通过类比添加的SQL where语句。

于 2013-06-05T17:42:53.330 回答