У меня есть функция, в которой мне нужно объединить результаты из двух объектов Either.
Мне нужна правая часть «запроса», если «processingResult» - Право, и это факт, что если «processingResult» - это Right, «request» - также Right.
Если «processingResult» - это Left, мне нужно его значение для построения ответа.
Прямо сейчас это реализация ( и FailingResponse, и SuccessfulResponse расширяют ValuationResponse):
def getResponse(handlingResult : Either[FailureReason, List[StockValuation]]
,request : Either[Error, ValuationRequest]
): ValuationResponse = {
handlingResult.fold(
failureReason =>
FailingResponse(failureReason.message
,failureReason.statusCode),
listOfValuations =>
SuccessfulResponse(listOfValuations
,request.right.get.symbol
,request.right.get.function
,StatusCodes.SUCCESS))
}
Но я подозреваю, что прямой доступ к любому из них не является хорошей практикой, например, в
request.right.get.symbol
Что может быть хорошим способом для достижения того же поведения, но рекомендуемым способом?