Groovy 如果不';我不在课堂上生存

Groovy 如果不';我不在课堂上生存,groovy,Groovy,我尝试对一些必需的变量执行if-then,如果没有提供值,则设置一个默认值: slaveCpus = Globals."SLAVE_${i}_CPU" ?: '0.1', groovy.lang.MissingPropertyException: No such property: SLAVE_1_CPU for class: Globals 如果我没有弄错您的问题,您希望使用默认值0.1向Globals添加动态静态属性 这可以通过向Globals类添加一个static,$static\u

我尝试对一些必需的变量执行if-then,如果没有提供值,则设置一个默认值:

slaveCpus = Globals."SLAVE_${i}_CPU" ?: '0.1',

groovy.lang.MissingPropertyException: No such property: SLAVE_1_CPU for class: Globals

如果我没有弄错您的问题,您希望使用默认值0.1向Globals添加动态静态属性

这可以通过向Globals类添加一个static,
$static\u property missing
方法来实现:

class Globals {
    static double SLAVE_1_CPU = 1.0
    static double SLAVE_2_CPU = 2.0

    static $static_propertyMissing(String name) {
        0.1 
    } 
}
如果无法更改Globals源代码,还可以使用元编程添加方法:

Globals.metaClass.static.propertyMissing << { name -> 0.1 }
打印出来

1.0
2.0 
0.1

Globals类应该有一个名为SLAVE\u 1\u CPU的属性。使用Globals.“SLAVE${i}{CPU”,您正在尝试动态访问属性。但要获得它们,它们应该存在。
1.0
2.0 
0.1