【问题标题】:Return specific value from grails closure从 grails 闭包返回特定值
【发布时间】:2014-08-29 10:09:30
【问题描述】:

我在从 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。我将非常感谢您的帮助!

【问题讨论】:

    标签: java grails groovy closures


    【解决方案1】:

    我发现我犯了错误,调用闭包而不是:

    def res = fun(list1, 10)
    

    应该是:

    def res = fun.call(list1, 10)
    

    对我来说一切都很好:)

    【讨论】:

    • 你不应该需要这个电话
    【解决方案2】:

    调用是等价的。此外,我不会过多地使用可选参数。我会这样说:

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

    【讨论】:

    • 感谢您的建议 :)!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    • 2021-07-20
    • 2022-12-16
    • 2020-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多