我使用Play 2与Anorm管理数据库访问。我发现自己正在做的一个常见模式是:如何从闭包传递数据而不重复自己
val (futureChecklists, jobsLookup) =
DB.withConnection { implicit connection =>
val futureChecklists = futureChecklistRepository.getAllHavingActiveTemplateAndNonNullNextRunDate()
val jobsLookup = futureChecklistJobRepository.getAllHavingActiveTemplateAndNonNullNextRunDate()
.groupBy(_.futureChecklist.id)
.withDefaultValue(List.empty)
(futureChecklists, jobsLookup)
}
这似乎有点奇怪,因为我必须重复自己。如果我在外部示波器中需要几个变量,它也会变得不稳定,但我不想保持连接处于打开状态。
是否有一种简单的方法可以将此信息传回而不必诉诸于var
?
我想什么是一样的东西:
val futureChecklists
val jobsLookup
DB.withConnection { implicit connection =>
futureChecklists = futureChecklistRepository.getAllHavingActiveTemplateAndNonNullNextRunDate()
jobsLookup = futureChecklistJobRepository.getAllHavingActiveTemplateAndNonNullNextRunDate()
.groupBy(_.futureChecklist.id)
.withDefaultValue(List.empty)
}
这样,我不必在开始和结束时相同的元组。
我认为这可能是有用的,如果你可以显示你想达到的伪代码。 – TeWu
@TeWu当然,我会添加一些 – cdmckay
您可以使用自定义贷款模式。例如,使用CheckAndJob [T](f:(CheckType,JobType)=> T)来确定:T =' – cchantep