如果类中没有变量,则设置变量

时间:2015-12-02 15:41:32

标签: groovy

我尝试为某些必需的变量执行if,如果没有提供值,请设置默认值:

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

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

1 个答案:

答案 0 :(得分:0)

如果我正确地关注了您的问题,您希望将动态静态属性添加到Globals,默认值为0.1。

这可以通过向Globals类添加静态$static_propertyMissing方法来实现:

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..3).each { i ->
    println Globals."SLAVE_${i}_CPU"
}

打印出来

1.0
2.0 
0.1