我是编程的新手,我想知道如何解决其中一个最基本的问题 - “FizzBuzz”的事情。我在Groovy中这样做。
我对如何构建代码有一个非常具体的想法,但我不能为我的生活找出如何针对数组中的每个值进行测试。
我的意思是说,对于列表[1,2,3,4]中的每个值,我将如何检查每个值是否均匀?我知道我可以选择阵列中的每个特定点,但这不是我想要的 - 我希望能够说出“如果n%2 = 0,则标记为偶数。”
这是一个非常基本的例子,但你可能会得到这个想法。任何帮助将不胜感激。
答案 0 :(得分:5)
Groovy允许您使用功能方法解决此问题。通过应用映射变换,您可以生成包含数字的对列表,无论它是偶数还是奇数。
所有groovy列表都有一个名为collect
的方法,用于在每个元素上映射闭包。返回值是一个列表,其中包含在每个元素上调用闭包的结果。例如:
[1, 2, 3, 4].collect {
[it, it % 2 ? 'odd' : 'even']
}
===> [[1:odd], [2:even], [3:odd], [4:even]]
这导致成对列表(实际上是2个元素列表)。希望结果是地图而不是列表是很常见的,而groovy有collect
的专用版本,仅为此而调用collectEntries
。这是一个返回地图的替代方案:
[1, 2, 3, 4].collectEntries {
[it, it % 2 ? 'odd' : 'even']
}
===> {1=odd, 2=even, 3=odd, 4=even}
答案 1 :(得分:0)
我会做类似的事情:
def list = [1, 2, 3, 4]
def map = [:]
list.each {
if (it % 2 == 0)
map.putAt(it, "even")
else
map.putAt(it, "odd")
}
println map
这将打印:[1:奇数,2:偶数,3:奇数,4:偶数],你可以在'if else'语句中做任何你想做的事,但我想你问的是如何一次遍历集合一个成员,'each'闭包是执行此操作的主要方式。