홈>
이 코드가 있습니다
service.confirm(identity, id)
.map(confirmationResponse -> InternalToExternalResponse.mapToExternal(confirmationResponse))
.map(externalResponse->uriBuilder.buildAuthorizeUri(externalResponse))
.lift(auditOperatorFactory.logRequestURI(identity, AuditCategory.BOOKKEEP));
이제
uriBuilder.buildAuthorizeUri(externalResponse)
를 확장해야합니다
confirmationResponse
를 가지고
두 번째 매개 변수로
confirmationResponse
를 사용할 수 있습니까
두 번째 람다 식의 첫 번째 람다 식에서? 마지막 코드는
service.confirm(identity, id)
.map(confirmationResponse -> InternalToExternalResponse.mapToExternal(confirmationResponse))
.map(externalResponse-**>uriBuilder.buildAuthorizeUri(externalResponse,confirmationResponse ))**
.lift(auditOperatorFactory.logRequestURI(identity, AuditCategory.BOOKKEEP));
- 답변 # 1
- 답변 # 2
두 가지 람다 식을 결합 할 수 있습니다 :
service.confirm(identity, id) .map(confirmationResponse -> { ExternalResponse externalResponse = InternalToExternalResponse.mapToExternal(confirmationResponse); return uriBuilder.buildAuthorizeUri(externalResponse,confirmationResponse);}) .lift(auditOperatorFactory.logRequestURI(identity, AuditCategory.BOOKKEEP));
짧은 람다 변수 이름을 사용하는 것이 좋습니다.
service.confirm(identity, id) .map(cr -> { ExternalResponse er = InternalToExternalResponse.mapToExternal(cr); return uriBuilder.buildAuthorizeUri(er,cr);}) .lift(auditOperatorFactory.logRequestURI(identity, AuditCategory.BOOKKEEP));
- 답변 # 3
단일 람다로 병합하지 않는 이유는 무엇입니까?
service.confirm(identity, id) .map(confirmationResponse -> uriBuilder.buildAuthorizeUri(InternalToExternalResponse.mapToExternal(confirmationResponse), confirmationResponse)) .lift(...)
- 답변 # 4
아니요,
그러나 첫 번째 람다 결과에 포함시킬 수 있습니다.confirmationResponse
를 사용할 수 없습니다 두 번째 람다에서. 기능 패턴을 깨뜨릴 수 있습니다.Pair
와 같은 유틸리티 클래스를 직접 만드십시오. :service.confirm(identity, id) .map(confirmationResponse -> Pair.of( InternalToExternalResponse.mapToExternal(confirmationResponse), confirmationResponse)) .map(p -> uriBuilder.buildAuthorizeUri(p.getFirst(), p.getSecond()) ...
여기서 좋은 스타일인지 확실하지 않습니다.
관련 자료
- blazor server side - 람다 식을 의도 한 대리자 형식으로 변환 할 수 없습니다 블록의 일부 반환 형식은 암시 적으로 대리자 ret-type으로 변환 할 수 없기 때문입니다
- gcc - 함수에서 제네릭 람다 식을 반환하면 명시 적 반환 형식이 지정된 경우 컴파일러 경고가 발생합니다
- c++ - 다른 유형을 취하는 람다 흑 마법
- Python OOP에서 동일한 객체를 다른 목록에 추가 할 때 다른 객체 ID를 얻는 이유는 무엇입니까?
- angular - 객체에서 다른 속성을 얻는 방법?
- entity framework - TreeList DataSource에 대해 서로 다른 개체 형식의 여러 IQueryable 결합
- c++ - + [] () {}의 차이점은 무엇입니까? 및 [+ [] () {});그리고 표현이 유효한 이유
- javascript - 객체의 배열을 반복하고 서로 다른 키로 연결
- 람다 std - : thread (c ++)의 함수에 개체 전달 : 삭제 된 함수 사용 시도
- Haskell, OCaml 및 nix 언어를 사용한 람다 미적분의 재귀 let 표현 이해
- python - 다른 함수에서 객체를 어떻게 참조합니까?
- python - Numpy/Sympy를 사용하여 람다 식의 미분을 어떻게 계산합니까?
- 동일한 수학 표현식 [javascript]의 두 가지 형식에서 다른 결과를 얻는 이유는 무엇입니까?
- python - 이 두 개의 다른 목록을 생성하기 위해 한 줄 생성기 표현식을 어떻게 만들 수 있습니까?
- assembly - 씨 - 동일한 표현이 완전히 다른 결과를 생성합니다
- python dictionary object - syntaxerror : expression은 할당을 포함 할 수 없습니다 "=="을 의미했을 수도 있습니다
- python - 람다 식 및 defaultdict로 트리 구조 만들기
- python - 함수를 람다 식으로 변환
- Java에서 Lambda 표현식 변환
관련 질문
- Java8 : 람다 및 오버로드 된 메서드의 모호성
- java : 이 code는 if 문이 너무 많기 때문에 읽기가 쉽지 않습니다. 이것을 더 읽기 쉽게 만드는 방법은 무엇입니까?
- java : 컬렉션 또는 스트림을 반환해야합니까?
- 논리 유형으로 Java 8 날짜가있는 Avro
- 여러 스레드가 JAVA에서 NIO를 사용하여 콘텐츠를 추가하려고 할 때 파일을 잠 가야합니까?
- java : 람다를 사용하여 두 목록에서
맵을 만드는 방법 - Java 8 최대 날짜 시간 객체로 목록에서 객체를 얻는 방법
- java : Collectors.groupby ()를 사용하는 동안 스트림에서 객체를 반복하는 방법
- Java 8에서 findAny ()와 findFirst ()의 차이점
- java : Thread.sleep에 대한 메서드 참조가 모호합니다.
당신은
confirmationResponse
를 전달할 수 있습니다 이것의 결과로 다음 람다에. 둘 다 필요하므로 사용자 정의 오브젝트를 작성하거나Pair
를 사용할 수 있습니다. 이렇게 :