作为初学者Groovy研讨会的一部分,我们迭代了下面的列表(fromJson.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
}发布于 2016-04-07 16:22:37
each将输入返回给each。您的代码可以正确地操作it.street。因此,您返回原来的列表,其中每个street被颠倒。使用collect,您可以创建一个新的列表,其中包含被操纵的项。因此,表面上的结果是相同的,但区别是您创建了一个新容器,但是您的原始容器仍然被篡改了。一个简单的经验法则:each用于副作用(这是您的例子)。而collect被用来创建新的东西(例如map)
https://stackoverflow.com/questions/36481872
复制相似问题