为了泛化一个函数,我发现自己使用了 null。但我不知道如何重构以删除它。这是代码片段:
trait ContextSwitch {
def appropriateContext(implicit context: ActorContext = null, system: ActorSystem = null): ActorRefFactory = {
val either: Either[ActorContext, ActorSystem] = if (context != null) Left(context) else Right(system)
val refProvider = either.fold[ActorRefFactory](ac => ac, as => as)
refProvider
}
}
这个想法是我现在可以这样称呼:
appropriateContext.actorOf(Props[Actor])
无论上下文如何,它都有效。这使得我依赖它的其他功能可测试(因为测试是在系统级别,而这些功能通常部署在只有上下文可用的参与者上)
该功能有效,但我怎样才能摆脱空值?