Groovy에서 정수 범위와 0.5 단계를 지정하는 가장 멋진 방법은 무엇입니까? 예 : 1, 1.5, 2, 2.5, 3, 3.5, 4Groovy 범위와 0.5 단계 크기
편집 : 수정 : 최종 결과로서 Grails 제약 조건에 사용할 범위 개체가 필요합니다 나는 목록도 괜찮을 것이라고 생각하지만.
Groovy에서 정수 범위와 0.5 단계를 지정하는 가장 멋진 방법은 무엇입니까? 예 : 1, 1.5, 2, 2.5, 3, 3.5, 4Groovy 범위와 0.5 단계 크기
편집 : 수정 : 최종 결과로서 Grails 제약 조건에 사용할 범위 개체가 필요합니다 나는 목록도 괜찮을 것이라고 생각하지만.
내가 볼 수있는 가장 좋은 방법은 step 명령을 사용하는 것입니다.
즉
1.step(4, 0.5){ print "$it "}
은 인쇄 것이다 : "1 1.5 2.0 2.5 3.0 3.5"
+1 이것이 최고의 대답 인 것 같습니다 –
는 참고로, 그루비 1.6.0의, 기본적으로 지원하지 않는 것 같습니다. 현재 ObjectRange.step (int) 만 존재합니다.
http://groovy.codehaus.org/api/groovy/lang/ObjectRange.html#step%28int%29
김은, 위의 빌드합니다. 값 발은 범위 1..N이 아니라 반 값이면 테스트하려면 다음
같은def range = 2..(n*2).collect { return it/2.0 }
return range.contains(val)
뭔가가 작동,하지만 내가 원하는만큼 꽤 아니지만, 그것은 당신이를 구축 할 수 있습니다 한 번 범위를 지정하고 필요한 경우 여러 번 사용하십시오.
속임수.
원하는 범위를 Groovy에서보다 쉽게 처리 할 수있는 다른 범위로 맵핑하십시오. 당신은 같은 것을 원하는 : 사실
y in [x, x+0.5, x+1, x+1.5, ..., x+n] // tricky if you want a range object
을 경우 만
(2*x)..(2*x+2*n).contains(2*y) //simple!
나 :
switch (2*y) {
case (2*x)..(2*x+2*n): doSomething(); break;
...}
범위 개체와 동일한
2*y in [2x,2x+1,2x+2,2x+3,...,2x+2n] // over whole integers only
def r = []
(0..12).each() {
r << it
r << it + 0.5
}
늦은 조금,하지만 너무
당신의 위 세트의 한 줄 작동합니다.
(2..8) * DIV (2)
내 대답은 다음과 같습니다
(1..4).step(0.5)
이것이 왜 투표가 실패했는지, 저에게 효과가 있었는지 확실하지 않습니다! –
@DavidMann'메소드의 서명 없음 : groovy.lang.IntRange.step()은 인수 유형에 적용 가능합니다. (java.math.BigDecimal) values : [0.5]' –
(1..7).collect{0.5*it}
아마도 당신은 [사용자 지정 범위 IMPL (http://kousenit.wordpress.com/2009/을 만들기위한 시장에서, 나는 일반적인 스레드에 의해 판단
생각할 수있는 최선입니다 02/07/making-a-groovy-class-a-range /)? –