加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Groovy:闭包或方法

发布时间:2020-12-14 16:39:00 所属栏目:大数据 来源:网络整理
导读:我已经习惯了使用Closures的地方,我可以代替常规的方法,即使我不需要访问自由变量。所以,我会用这个: def addNumbers = {left,right – 左右 } ..而不是这样: def addNumbers(left,right){left right} 这是不好的做法吗?我更喜欢在使用闭包的方法,
我已经习惯了使用Closures的地方,我可以代替常规的方法,即使我不需要访问自由变量。所以,我会用这个:

def addNumbers = {left,right – >左右 }

..而不是这样:

def addNumbers(left,right){left right}

这是不好的做法吗?我更喜欢在使用闭包的方法,我得到的额外的力量,我更喜欢的语法。

谢谢!

解决方法

我只使用闭包,在我需要它们,即我默认使用方法。我这样做是因为

>方法比闭包更简单。闭包有一个委托,一个所有者,保留对创建时在其本地作用域中的变量的访问权(你称为“自由变量”)。默认情况下,闭包中的方法调用可以通过以下方式调用:

>关闭本身
>关闭所有者
>关闭委托

但是这个顺序可以在运行时更改,一个闭包的委托也可以更改为任何对象。

所有这些因素组合可以使一些使用闭包的代码非常棘手,所以如果你不需要任何这种复杂性,我宁愿通过使用一个方法来消除它

>为Groovy中定义的每个闭包生成.class文件。我没有什么证据支持一个正规方法比闭合更有效,但我怀疑。至少,很多类可能会导致你耗尽PermGen内存空间 – 这过去常常发生在我身上,直到我把我的PermGen空间提高到大约200MB

我不知道我倡导的做法(默认情况下使用方法,只在需要时使用闭包)被广泛认为是“最佳实践”,所以我很想知道别人的想法。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读