在groovy中迭代类成员

在groovy中迭代类成员,groovy,Groovy,我有一个名为元音的类,它包含代表每个元音的5个变量。用户输入一个句子,一些巫术发生,一个方法计算元音a打印它们: [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个println(每个元音每个操作1个)实现了这一点,

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

[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个println(每个元音每个操作1个)实现了这一点,但是否可以用循环优化这一点?
我找到了一些关于反射的信息,但我不太理解。

通过调用
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}"
        ...
    }
}

通过调用
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}"
        ...
    }
}

这将有助于共享您的代码。会有各种各样的解决方案,但很可能取决于你目前拥有的,我看不出有任何理由为元音设置单独的变量;看起来更像是字符串(字母)=>int(计数)的简单映射,这使得这一点很简单,根本不需要反射。不做最简单的事情的理由是什么?我没有诚实地想到这种方法,我认为制作一个类是一种方式。我不是一个真正有经验的程序员,所以每一个批评都是非常受欢迎的。分享你的代码会有帮助的。会有各种各样的解决方案,但很可能取决于你目前拥有的,我看不出有任何理由为元音设置单独的变量;看起来更像是字符串(字母)=>int(计数)的简单映射,这使得这一点很简单,根本不需要反射。不做最简单的事情的理由是什么?我没有诚实地想到这种方法,我认为制作一个类是一种方式。我不是一个真正有经验的程序员,所以每一个批评都是非常受欢迎的。订购可以很容易地解决
v.properties.sort{it.key}。每个{name,value->…}
:)排序都可以很容易地解决
v.properties.sort{it.key}。每个{name,value->…}
:)