나는이 같은 스위치 케이스있어이 너무 단순 해 보이는 무언가에 대한 코드의 꽤 많은 것 같다스위치 케이스를 최적화하려면 어떻게해야합니까?
def someString = 'hello1234bla'
// ...
switch (someString) {
case {it.contains('1234')}:
doSomething()
break
case {it.contains('2468')}:
doSomethingElse()
break
default:
throw new Exception("ERROR: Number not found")
break
}
. 내가 원하는 것은 someString에 특정 부분 문자열이있을 때 다른 기능을 실행하도록하는 것입니다. 어쩌면 if-else 캐스케이드를 제외하고는 이렇게하는 간단한 방법이 없을까요?
지도를 사용하고, 함수를 저장하고, 해당지도의 각 요소를 통해 번호주기를 입력하고 일치하는 함수를 호출하는 것은 어떻습니까? Groovy가 그런 데이터 타입을 가지고 있는지 모르겠지만이 컨셉은 Java 등에서 가능합니다. –
@Krazor : Groovy에서'{1234 : {doSomething()}}과 같은 것. 각 {s, fn -> if (someThing.contains (s)) fn()}' – cfrick
Yeiks, 이제는별로 읽을 수 없어요. Non-less-less 방식을 사용하면 사용자 입력과 해당 기능을 신속하게 연결하고 변경할 수 있습니다. –