2014-08-29 3 views
1

У меня возникла проблема с возвратом определенного значения от закрытия Grails в моем случае это ArrayList.Возврат определенного значения из закрытия гранул

Вот мой код:

def fun= 
{ 
    list1, limit = list1.size()-1 -> 
    def returnList = new ArrayList() 
    for(Elem el in list1) 
    { 
     def info = el.getInfo() 
     boolean toAdd = true 
     if(info.size() <= 1) 
     {    
      aut.each 
      { 
       icz -> 
        if(icz.info == "hehe") 
        { 
         toAdd = false 
        } 
      } 
     } 
     if(toAdd) 
     { 
      returnList.add(el) 
      --limit 
     } 
     if(limit < 0) 
     { 
      break 
     } 
    } 
    returnList 
} 

и я выполнения этого типа: удовольствие (песни1, 10) или весело (песни1), где песни1 содержит некоторые элементы.

Также, когда я отлаживаю свой код, я узнаю, что мое закрытие возвращающего типа значения - это событие. И я не знаю, что я делаю неправильно, конечно, если законно делать что-то вроде этого ,

Я также пытаюсь использовать определенный тип моего закрытия для ArrayList, но это порождает ошибку, что закрытие не может быть преобразовано в ArrayList. Я буду очень благодарен за помощь!

ответ

1

я нашел, где я сделал свою ошибку, вызвать замыкание вместо:

def res = fun(list1, 10) 

Оно должно быть:

def res = fun.call(list1, 10) 

И все отлично работает для меня :)

+1

Вам не нужен звонок –

0

вызовы эквивалентны. Кроме того, я бы не стал вмешиваться в необязательные аргументы. Я бы сказал, что:

def fun = { list1, limit = null -> 
    if(null == limit) limit = list1.size() - 1 
    ... 
} 
+0

Спасибо за совет :)! – MNie

Смежные вопросы