Groovy.each与.Collect [英] Groovy .each vs .collect

查看:29
本文介绍了Groovy.each与.Collect的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

作为Groovy初学者研讨会的一部分,我们已经迭代了以下列表(from Json.secrets):

[[floors:10, street:emaseS, url:http://plywoodpeople.com/wp-content/uploads/2012/03/kermit_the_frog.jpg], [floors:2, street:emaseS, url:http://36.media.tumblr.com/tumblr_lp9bg9Lh2x1r0h9bqo1_500.jpg], [floors:2, street:yawdaorB, url:https://montclairdispatch.com/wp-content/uploads/2013/07/broadway1.jpg], [floors:5, street:emaseS, url:AAA], [floors:2, street:yawdaorB, url:AAA], [floors:6, street:albmaR aL, url:AAA], [floors:1, street:teertS llaW, url:AAA], [floors:6, street:daoR yebbA, url:AAA], [floors:3, street:teertS llaW, url:AAA], [floors:4, street:dlirehstoR, url:AAA]]

最初的计划是使用.Collect,但是它看起来像是使用了.each产生了相同的结果(迭代列表.)。

问题是,是否有人可以帮助我了解针对我的用例的方法与一般方法之间的区别

每个:

reversed_streets = fromJson.secrets.each {
    it.street = it.street.reverse()
    it
}


收款:

reversed_streets = fromJson.secrets.collect {
    it.street = it.street.reverse()
    it
}

推荐答案

each将输入返回到each。您的代码就地操作it.street。因此,您将返回原始列表,其中每个street都被颠倒了。使用collect,您可以使用操作过的项目创建一个新列表。因此,表面上的结果是相同的,但是不同的是您创建了一个新容器,但是您的原始容器仍然被篡改了。有一条简单的经验法则:each用于副作用(这就是您的示例)。而collect用于创建新内容(例如map)

这篇关于Groovy.each与.Collect的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆