在groovy中迭代类成员

时间:2016-01-29 15:54:09

标签: groovy

我有一个名为Vowels的类,它包含5个代表每个元音的变量。用户输入一个句子,一些伏都教魔法发生,一个方法计算元音打印它们:

[a = 9, e = 5, i = 7, o = 5, u = 6]

之后,请求用户输入一个随机整数,另一个方法执行所有4个基本数学运算,如下所示:

input
3

output
a --> 9 * 3 = 27
a --> 9 / 3 = 3
a --> 9 + 3 = 12
a --> 9 - 3 = 6

到目前为止,我已经设法用20个printlns(每个元音的每个操作1个)来实现这一点,但是这可以用循环优化吗? 我找到了一些关于反思的信息,但我并不理解它。

1 个答案:

答案 0 :(得分:4)

通过调用getProperties可以获得对象的成员。每个对象都有一个名为class的属性,你可以忽略它,并且没有定义顺序,所以' e'可能会出现在' a'之前的属性中。例如:

class Vowels {
    int a, e, i, o, u
}

def v = new Vowels(a: 9, e: 5, i: 7, o: 5, u: 6)
v.properties.each { name, value ->
    if (name != 'class') {
        println "$name --> $value * 3 == ${value * 3}"
        ...
    }
}