Groovy:如何从groovy脚本中的方法设置属性/字段/ def?

给定一个简单的groovy脚本(不是类!),如何设置方法外的属性/字段的值?

以下代码无法按预期工作:

def hi;

def setMyVariable() {
    hi = "hello world!"
}

setMyVariable()
assert hi == "hello world!"    //fails
println hi                     //prints null

尝试失败

我尝试过很多东西,包括以下内容,都失败了

def setMyVariable() {
    this.hi = "hello world!"
}

public void setMyVariable() {
    hi = "hello world!"
}

public String hi;
public void setMyVariable() {
    this.hi = "hello world!";
}

摘要

设置方法声明外部变量的最简单方法是什么?我唯一可以上班的是以下内容.必须有一个更简单的方法

def hi;

def setMyVariable() {
    this.binding.setVariable("hi","hello world!")
}

setMyVariable()

println this.binding.getVariable("hi")
assert this.binding.getVariable("hi") == "hello world!"  //passes
assert hi == "hello world!"  //fails

解决方法

您可以为变量分配匿名函数,而不是定义方法

def hi

def setMyVariable = {
    hi = "hello world!"
}

setMyVariable()
assert hi == 'hello world!'

相关文章

1.下载安装SuperScript插件-> jEdit Plugin Central 2.修改<jedit.home>/startup/startup.bsh...
c/c++ pascal basic java c# perl    自由王国的体现 groovy     lisp    波兰式, C C++ P...
目前的脚本语言已经很多了,包括Python、Ruby以及对应于java平台的Jython和JRuby。前一段时间对Python有...
看了点groovy的ml archives,争论不休的EOS/EOL问题。 C-style的语言本没有EOS问题,语法规定显式的...
昨天终于挑灯看完了http://www-106.ibm.com/developerworks/java/library/j-alj08034.html,很多年以后...
1.   从例子开始 a)        目的:演示Groovy的一些简单特性。   b)        代码: ...