Scala';s重载和默认参数限制:如何避免写下许多组合?

Scala';s重载和默认参数限制:如何避免写下许多组合?,scala,Scala,我最近发现Scala不允许同一方法的多个重载版本具有默认参数。我有一组方法重载,其中当(且仅当)指定了一个主参数时,需要隐式参数。这将是“主要”方法: def replies(after: Option[Post] = None, limit: Option[Int] = None) (implicit db: Instance, order: QueryOrdering[Post]): Stream[Post] 这将使用基本分页从数据库中获取条目。如果指定了之后的,则根

我最近发现Scala不允许同一方法的多个重载版本具有默认参数。我有一组方法重载,其中当(且仅当)指定了一个主参数时,需要隐式参数。这将是“主要”方法:

def replies(after: Option[Post] = None, limit: Option[Int] = None)
           (implicit db: Instance, order: QueryOrdering[Post]): Stream[Post]
这将使用基本分页从数据库中获取条目。如果指定了之后的,则根据顺序,只应检索逻辑上紧跟其后的条目。但我不想在未提供
的情况下指定
顺序。但不允许使用以下代码,因为只有单个重载可以有默认参数:

def replies(limit: Option[Int] = None)
           (implicit db: Instance): Stream[Post]
  replies(limit = limit)(db, QueryOrdering.noOp)   
我可以写下所有可能参数组合的方法:

def replies()(implicit db: Instance)
def replies(after: Post)(implicit db: Instance, order: QueryOrdering[Post])
def replies(limit: Int)(implicit db: Instance)
但这很麻烦,而且对于2个以上的参数,很容易发生组合爆炸。有没有更好的方法来模拟这一点?

还没有人说过“磁铁模式”

每个人都必须有午餐休息时间

然后,您可以控制哪些隐式可用于打包给定的参数组合

还没有人说过“磁铁模式”吗

每个人都必须有午餐休息时间

然后,您可以控制哪些隐式可用于打包给定的参数组合