如何从数组或列表中选择所有值?

Ben*_*Ben 1 arrays groovy fizzbuzz selection

我是编程的新手,我想知道如何解决其中一个最基本的问题 - "FizzBu​​zz"的事情.我在Groovy中这样做.

我对如何构建代码有一个非常具体的想法,但我不能为我的生活弄清楚如何针对数组中的每个值测试一些东西.

我的意思是,对于列表[1,2,3,4]中的每个值,我将如何检查每个值是否均匀?我知道我可以选择阵列中的每个特定点,但这不是我想要的 - 我希望能够说出"如果n%2 = 0,则标记为偶数".

这是一个非常基本的例子,但你可能会得到这个想法.任何帮助将不胜感激.

ata*_*lor 5

Groovy允许您使用功能方法解决此问题.通过应用映射变换,您可以生成包含数字的对列表,无论它是偶数还是奇数.

所有groovy列表都有一个方法,collect用于在每个元素上映射闭包.返回值是一个列表,其中包含在每个元素上调用闭包的结果.例如:

 [1, 2, 3, 4].collect {
      [it, it % 2 ? 'odd' : 'even']
 }
 ===> [[1:odd], [2:even], [3:odd], [4:even]]
Run Code Online (Sandbox Code Playgroud)

这导致对列表(实际上是2个元素列表).希望结果是地图而不是列表是很常见的,而groovy有一个专门的版本collect,collectEntries只为此而调用.这是一个返回地图的替代方案:

[1, 2, 3, 4].collectEntries {
    [it, it % 2 ? 'odd' : 'even']
}
===> {1=odd, 2=even, 3=odd, 4=even}
Run Code Online (Sandbox Code Playgroud)