Scala';s重载和默认参数限制:如何避免写下许多组合?
我最近发现Scala不允许同一方法的多个重载版本具有默认参数。我有一组方法重载,其中当(且仅当)指定了一个主参数时,需要隐式参数。这将是“主要”方法:Scala';s重载和默认参数限制:如何避免写下许多组合?,scala,Scala,我最近发现Scala不允许同一方法的多个重载版本具有默认参数。我有一组方法重载,其中当(且仅当)指定了一个主参数时,需要隐式参数。这将是“主要”方法: def replies(after: Option[Post] = None, limit: Option[Int] = None) (implicit db: Instance, order: QueryOrdering[Post]): Stream[Post] 这将使用基本分页从数据库中获取条目。如果指定了之后的,则根
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个以上的参数,很容易发生组合爆炸。有没有更好的方法来模拟这一点?还没有人说过“磁铁模式”
每个人都必须有午餐休息时间
然后,您可以控制哪些隐式可用于打包给定的参数组合
还没有人说过“磁铁模式”吗
每个人都必须有午餐休息时间
然后,您可以控制哪些隐式可用于打包给定的参数组合