无法在函数内访问Groovy变量

watbbzwu  于 8个月前  发布在  其他
关注(0)|答案(3)|浏览(82)
/* Hello World in Groovy */
println("Hello world")

int a =  5


if (1 == 1){
    println a
    fcn() //line 11
}

def fcn(){
    println a //line 15
}

这是我的Groovy脚本,它获取错误

Hello world
5
Caught: groovy.lang.MissingPropertyException: No such property: a for class: main
groovy.lang.MissingPropertyException: No such property: a for class: main
    at main.fcn(main.groovy:15)
    at main.run(main.groovy:11)

被处决时。为什么变量a在函数fcn中不可用?

jm2pwxwz

jm2pwxwz1#

您可以以不同的方式定义变量a
备选案文1

a = 5

备选案文2

import groovy.transform.Field

...
@Field int a = 5

合理的做法是在脚本的作用域中定义一个字段,而不是在脚本的“run方法”中定义的变量,因此不能从其他函数中访问。
考虑查看this thread以获取更多信息Field注解文档的链接也提供了相关信息

9w11ddsr

9w11ddsr2#

选项3您可以将fcn定义为一个适当的函数,在Groovy中由Closure表示。然后你可以访问外部作用域的变量:

int a =  5

def fcn = {     
  println a
}

if(true){
  fcn()
}
llycmphe

llycmphe3#

在定义全局变量时尝试a = 5,这应该在函数fcn中可用。
How do I create and access the global variables in Groovy?

相关问题