groovy缺失属性执行
我是groovy的新手。我想弄清楚基本的语法。以下代码段:groovy缺失属性执行,groovy,Groovy,我是groovy的新手。我想弄清楚基本的语法。以下代码段: def CRITICAL = 2; def MAJOR = 3; def MINOR = 9; def GetPriorityFromString(String priorityStr) { switch (priorityStr){ case "Critical" : return CRITICAL; case "Major" : return MAJOR; case "Mino
def CRITICAL = 2;
def MAJOR = 3;
def MINOR = 9;
def GetPriorityFromString(String priorityStr) {
switch (priorityStr){
case "Critical" : return CRITICAL;
case "Major" : return MAJOR;
case "Minor" : return MINOR;
}
return 0;
}
GetPriorityFromString("Minor")
导致此错误的原因:
groovy.lang.MissingPropertyException: No such property: MINOR for class: Script21
我做错了什么
(由于我不熟悉这种语言,请随意建议任何将字符串转换为枚举值的“groovier”方法。)只需使用映射即可
def mapping =["CRITICAL": 2, "MAJOR" : 3, "MINOR": 9]
println mapping["MINOR"]
至于您的原始代码:
变量的范围有问题。如果您在脚本上下文中,您可能不会使用“def”来声明全局变量,只需将其忽略即可
CRITICAL = 2;
MAJOR = 3;
MINOR = 9;
def GetPriorityFromString(String priorityStr) {
switch (priorityStr){
case "Critical" : return CRITICAL;
case "Major" : return MAJOR;
case "Minor" : return MINOR;
}
return 0;
}
GetPriorityFromString("Minor")
如果你把它放到一个普通的类中,那么你必须使用defs
class Test {
def CRITICAL = 2;
def MAJOR = 3;
def MINOR = 9;
def GetPriorityFromString(String priorityStr) {
switch (priorityStr){
case "Critical" : return CRITICAL;
case "Major" : return MAJOR;
case "Minor" : return MINOR;
}
return 0;
}
}
new Test().GetPriorityFromString("Minor")
把它放到真正的课堂上。