2014-08-29 52 views
1

我有一個問題,從我的情況下,它是ArrayList返回grails閉包的具體值。從grails閉包返回具體值

這裏是我的代碼:

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

你不應該需要電話 – 2014-08-29 14:19:47

0

這些電話是等同的。另外,我不會惹惱那些可選的參數。我會這樣說:

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

感謝您的意見:)! – MNie 2014-08-30 10:53:52