从grails封闭返回特定值

时间:2014-08-29 10:09:31

标签: java grails groovy closures

我遇到了从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
}

我正在执行这个:fun(list1,10)或fun(list1),其中list1包含一些元素。

此外,当我调试我的代码时,我发现我的闭包返回值类型是一个事件。我不知道,我做错了什么,当然如果做这样的事情是合法的。

我还尝试将特定类型的闭包设置为ArrayList,但是这会抛出一个错误,即闭包无法转换为ArrayList。我将非常感谢您的帮助!

2 个答案:

答案 0 :(得分: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
  ...
}