groovy邮件功能_Groovy中的功能部件,第1部分

本文是关于如何通过Groovy的函数式编程特性改变看待和操作列表的方式,包括使用递归遍历和过滤列表,以及如何实现和使用惰性列表。这些特性可以帮助开发人员更高效地处理集合,特别是对于昂贵资源的初始化和无限序列的生成。作者通过实例展示了Groovy如何简化代码结构,管理状态,并鼓励使用功能性的编程思维方式。
摘要由CSDN通过智能技术生成

告白:我再也不想用一种非垃圾收集的语言工作了。 我用像C ++这样的语言缴纳了多年的会费,而且我不想放弃现代语言的便利性。 这就是软件开发如何进行的故事。 我们构建抽象层来处理(并隐藏)世俗的细节。 随着计算机功能的增长,我们将更多的任务转移给了语言和运行时。 十年前,开发人员回避了解释型语言,因为它们对生产应用程序来说太慢了,但现在已经很普遍了。 功能语言的许多功能在十年前就已经令人望而却步地慢了下来,但现在变得非常有意义了,因为它们优化了开发人员的时间和精力。

我在本系列文章中介绍的许多功能都显示了功能语言和框架如何处理世俗的细节。 但是,您不必使用功能语言即可开始从功能构造中受益。 在本期以及下期中,我将展示一些函数式编程如何已经渗透到Groovy中。

Groovy的功能性清单

Groovy大大增强了Java集合库,包括添加功能构造。 Groovy为您提供的第一个好处是在列表上提供了不同的视角,乍一看似乎微不足道,但提供了一些有趣的好处。

看到列表的方式不同

如果您的背景主要是使用C或类似C的语言(包括Java),则您可能会将列表概念化为索引集合。 即使没有显式使用索引,这种观点也使遍历一个集合变得容易,如清单1所示,它们是Groovy代码:

清单1.使用(隐藏)索引的列表遍历
def perfectNumbers = [6, 28, 496, 8128]

def iterateList(listOfNums) {
  listOfNums.each { n ->
    println "${n}"
  }
}

iterateList(perfectNumbers)

Groovy还包括一个eachWithIndex()迭代器,该迭代器在需要显式访问的情况下将索引作为代码块的参数提供。 即使我没有在清单1iteraterList()方法中使用索引,我仍然将其视为插槽的有序集合,如图1所示:

图1.列表作为索引槽
列表作为索引槽的图示

许多函数式语言在列表上的观点略有不同,幸运的是Groovy拥有这种观点。 与其将列表视为带索引的插槽,不如将其视为列表中第一个元素(标头 )和列表其余部分( 尾部 )的组合,如图2所示:

图2.列表的头和尾
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值