Диапазон Groovy с 0,5 размерами шага

Измените селектор в registry-table.component.ts с «registry-table» на эту «registry-table»

11
задан Michael Borgwardt 21 February 2009 в 17:54
поделиться

6 ответов

Лучшим способом я вижу, использует команду шага.

т.е.


    1.step(4, 0.5){ print "$it "}

распечатал бы: "1 1.5 2.0 2.5 3.0 3.5"

29
ответ дан 3 December 2019 в 02:02
поделиться

Обман.

Отобразите свой желаемый диапазон в другого, который более легко обрабатывается Groovy. Вы хотите что-то как:

 y in [x, x+0.5, x+1, x+1.5, ..., x+n] // tricky if you want a range object

который верен если и только если:

 2*y in [2x,2x+1,2x+2,2x+3,...,2x+2n] // over whole integers only

который совпадает с объектом диапазона:

(2*x)..(2*x+2*n).contains(2*y)   //simple!

или:

switch (2*y) {
   case (2*x)..(2*x+2*n): doSomething(); break;
   ...}
0
ответ дан 3 December 2019 в 02:02
поделиться

К вашему сведению, с Groovy 1.6.0, это, кажется, не поддерживает исходно. Там существует только ObjectRange.step (интервал) в данный момент.

http://groovy.codehaus.org/api/groovy/lang/ObjectRange.html#step%28int%29

0
ответ дан 3 December 2019 в 02:02
поделиться

Soo, для построения выше. Протестировать, если значение val находится в диапазоне 1.. n, но с половиной значений:

def range = 2..(n*2).collect { return it/2.0 }
return range.contains( val )

Что-то как этот работало бы, но не так симпатично, как я хотел бы, но это позволяет Вам создать диапазон однажды и использовать его многократно при необходимости в этом.

1
ответ дан 3 December 2019 в 02:02
поделиться
def r = []
(0..12).each() {
  r << it
  r << it + 0.5
}
0
ответ дан 3 December 2019 в 02:02
поделиться

Немного поздно, но это тоже работает

Однострочник для вашего набора выше:

(2..8) *. Div (2)

5
ответ дан 3 December 2019 в 02:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: