Groovy замыкание инстанцировать переменные - PullRequest
0 голосов
/ 06 декабря 2010

возможно ли создать набор переменных из списка значений с помощью замыкания ??причина для этого заключается в создании некоторой рекурсивной функциональности, основанной на списке (скажем) двух, трех, четырех или пяти частей. Код здесь, конечно, не работает, но любые указатели были бы полезны.* РЕДАКТИРОВАТЬ >>

Да, я пытаюсь найти отличный способ очистить это, что я должен сделать после каждого цикла

len = rez[3].trim()
if(len.contains("all")){
len = "all"
} else if (len.contains(" ")){
len = len.substring(0, len.indexOf(" ")+2 )
}
len = len.replaceAll(" ", "")
with = rez[2].trim()
place = rez[1].trim()
when = rez[0].trim()
event = shortline[0]

и если я решу добавить еще один элементк списку (который я только что сделал) я должен вспомнить, какой [i] он должен быть успешно извлечен

Это рабочая часть для последующего анализа дат / времени, чтобы затем использовать jChronic для преобразования естественного текста в григорианский.Информация календаря, чтобы я мог установить событие в календаре Google

Ответы [ 2 ]

1 голос
/ 06 декабря 2010

Как насчет:

def longthing = 'A for B with C in D on E'
def breaks = [" on ", " in ", "with ", " for "]
def vary = ['when', 'place', 'with', 'event']
rez = []
line = place = with = event = ""

breaks.eachWithIndex{ b, i ->
  shortline = longthing.split(b)
  longthing = shortline[0]
  this[vary[i]] = shortline[1]
  rez[i] = shortline[1]
}
return place + "; " + with + "; " + event
0 голосов
/ 06 декабря 2010

когда вы используете замыкание со списком и «каждым», groovy зацикливается на элементе в списке, помещая значение в списке в переменную «it».Тем не менее, поскольку вы также хотите отслеживать индекс, есть элемент groowy eachWithIndex, который также передает в индекс

http://groovy.codehaus.org/GDK+Extensions+to+Object

, что-то вроде

breaks.eachWithIndex {item, index ->
   ... code here ...
}
...