我有類似於下面的情況,如果請求來自UI,則在執行其他任何操作之前,必須首先驗證請求。但是,如果請求不是從UI提交的 - 但通過EDI說 - >在這種情況下,有一些商務請求如何在請求中填充子數據「id」後繼續父數據並將父數據標識使用到子數據部分。這個細節對於這個問題並不重要。基於請求參數更改函數調用序列
爲了方法調用改變順序在for
理解我有類似於下面的東西看起來有點重複和非慣用。有沒有更好的方法來實現這一目標?
def persistData(req : Request) = {
req.actionFromUI match{
case Some(_) => for{
validatedReq <- validateRequest(req) //1st thing
transformedReq <- transformRequest(validatedReq)
persitedReq <- persistRequestData(transformedReq)
}
case None => for{
transformedReq <- transformRequest(validatedReq)
persitedReq <- persistRequestData(transformedReq)
validatedReq <- validateRequest(persitedReq) //last thing
}
}
}