「外部」クラス (実際には外部クラスではない) への参照が必要です。
コードをファイルに記述していると仮定すると、とのScript.groovy2 つのクラスが生成されます。メソッドが定義されている場所がわからないため、メソッドを呼び出す方法はありません。C.classScript.classCf()
いくつかのオプションがあります:
1) @MichaelEasterのアイデア、現在のスコープからメタクラス定義を与える(つまりScript)
2)Script内部でオブジェクトを作成/渡すC:
def f() { "f" }
class C
{
public h(s = new Script()) { s.f() }
}
assert "f" == new C().h()
3)内部Cクラスを作成します (次のインスタンスも必要ですScript:
class Script {
def f() { "f" }
class C
{
public h() { f() }
}
static main(args) {
assert "f" == new C(new Script()).h()
}
}
4) static 内部クラスと static f():
class Script {
static def f() { "f" }
static class C
{
public h() { f() }
}
static main(args) {
assert "f" == new C().h()
}
}