int increment = 0;
if (StringUtils.isNotBlank(request.getParameter(NEXT_SCREEN_PARAMETER_NAME))) {
increment = 1;
} else if (StringUtils.isNotBlank(request.getParameter(PREV_SCREEN_PARAMETER_NAME))) {
increment = -1;
} else if (StringUtils.isNotBlank(request.getParameter(LAST_SCREEN_PARAMETER_NAME))) {
increment = Integer.MAX_VALUE;
}
답변
는 당신이 문제를 시작하기 위해이 방법을 설정 피하려고 거라고 생각하지만, 그건 당신이 처리했던 거라면, 나는 선명한가
def testParam(s: String) = StringUtils.isNotBlank(request.getParameter(s))
val increment = (
if (testParam(NEXT_SCREEN_PARAMETER_NAME)) 1
else if (testParam(PREV_SCREEN_PARAMETER_NAME)) -1
else if (testParam(LAST_SCREEN_PARAMETER_NAME)) Int.MaxValue
else 0
)
당신이 좋아하는 뭔가를 할 수 :
val conditions = Seq((NEXT_SCREEN_PARAMETER_NAME,1),
(PREV_SCREEN_PARAMETER_NAME,-1),
(LAST_SCREEN_PARAMETER_NAME,Integer.MAX_VALUE))
def parameterDefined(p: String) = StringUtils.isNotBlank(request.getParameter(p))
val increment = conditions.find(x => parameterDefined(x._1)).map(_._2).getOrElse(0)
이 각 매개 변수에 대한 적절한 증분 값을 정의 첫 번째로 정의 된 매개 변수를 발견, 일치하는 항목이없는 경우 0을 산출 증분 값을 추출합니다.
약간 변형 한 버전과 같이있을 거라고 생각 제프의 ansver의 scalaz를 사용
object ScreenParam {
def unapply(kv:Tuple2[String, Int]) =
if(StringUtils.isNotBlank(request.getParameter(kv._1))) Some(kv._2) else None
}
val conditions = Seq((NEXT_SCREEN_PARAMETER_NAME,1),
(PREV_SCREEN_PARAMETER_NAME,-1),
(LAST_SCREEN_PARAMETER_NAME,Integer.MAX_VALUE))
conditions.collect{ case ScreenParam(value) => value}.getOrElse(0)
val ps = Seq(1 -> NEXT_SCREEN_PARAMETER_NAME,
-1 -> PREV_SCREEN_PARAMETER_NAME,
Int.MaxValue -> LAST_SCREEN_PARAMETER_NAME)
val test = StringUtils.isNotBlank(request.getParameter(_ : String))
(ps.view map { case (i,n) => i -> test(n) }) collect { case (i, true) => i } headOption getOrElse 0
, 당신은 (∘∘) 함수를 지도 맵을 사용할 수 있습니다
를ps.∘∘[PartialApply1Of2[Tuple2, Int]#Apply, String, Boolean](test)
collect { case (i, true) => i } headOption orZero
언제나 그렇듯이 스칼라즈의 경우처럼 스칼라 유형 유추가 부분 적용 유형 생성자를 유추 할 수 없다는 것은 정말로 유감스러운 일입니다. 그렇다면 :
(ps ∘∘ test) collect { case (i, true) => i } headOption orZero
지도가 올바른 순서로 반복 실행되는 것은 아닙니다. –
좋은 지적입니다. 분명히'Map3'으로 끝날 것이기 때문에이 경우에있을 것입니다. 나는 'Seq'로 바꿨다. –
- 1. 어떻게이 코드를 작성 currenly
- 2. 어떻게이 같은 코드를 동적으로 자바 스크립트 또는 JQuery와
- 3. 어떻게 Clojure SSH 클라이언트를 작성하겠습니까?
- 4. 객체 참조의 원 자성
- 5. 스칼라에 대한 정적 테스트
- 6. 어떻게이 자바 스크립트 문제를 디버그하겠습니까?
- 7. 스칼라에 개미를 구성하십시오.
- 8. 스칼라에 게임 엔진이 있습니까?
- 9. 어떻게이 Lisp/Scheme 코드를 작성 하시겠습니까?
- 10. 어떻게이 코드를 더 최적화 할 수 있습니까?
- 11. 어떻게이 코드를 비동기로 만들 수 있습니까?
- 12. 어떻게이 코드를 파싱 할 수 있습니까?
- 13. PHP 패턴 - 어떻게이 코드를 작성할 수 있습니까?
- 14. 어떻게이 템플릿 코드를 모호하게 할 수 있습니까?
- 15. 어떻게이 Delphi Set 코드를 C#으로 변환합니까?
- 16. 부품 번호 필드의 원 자성
- 17. SQL 다중 명령 자성 질문
- 18. RabbitMQ 팝 조작 원 자성
- 19. 어떻게이
- 20. 어떻게이 자바 스크립트 정규식 일치 기능을 설정합니까?
- 21. 하스켈의 '어쩌면'함수가 스칼라에 내장되어 있습니까?
- 22. 스칼라에 명명 된 생성자가 있습니까?
- 23. 스칼라에 부분 문자열 프록시가 있습니까?
- 24. 스칼라에 액터가있는 바이너리 검색 구현?
- 25. "call-cc"패턴이 스칼라에 있습니까?
- 26. 직렬화 가능 격리 수준 원 자성
- 27. Spring Jdbc의 원 자성 (변경 테이블 포함)
- 28. 자바 스크립트 코드를 암호화
- 29. PHP에서 자바 코드를 호출
- 30. 자바 소스 코드를 묻습니다.
'def testParam (s : String) = StringUtils.isNotBlank (request.getParameter (s))'- nice! –
@Fabian - 귀하의 답변도 완벽하게 의미가 있습니다. 내가 너를 본다면 내 대답을 덧붙이 지 않았을거야. (필자는 광산을 입력 한 다음 AFK로 가야하고 돌아 왔을 때 보내기를 누르십시오.) –
첫 줄은 내가 생각하려고했던 빠진 부분이었고 내 대답을 쓸모 없게 만들었습니다. 내 것을보고 당신을 추가했습니다 :-) –