1

クラスを作成しました:NumberHelper

メソッドがあります:roll(num)

のように別名にしたいrollOnceので、次のように書きました。

static def rollOnce = NumberHelper.&roll

を呼び出すと、プログラムは例外をスローしますrollOnce。Groovyでこれを行う方法は?

もっと詳しく:

まず、Java で Number クラスを実装します。

    def userBuildScript = findScript(name) as Closure
    use (NumberHelper, StringHelper, UserHelper){
        // first make the user object
        // then
        userBuildScript.call(preBuildUser, businessNumberObject)
    }

Number クラスのカテゴリ クラスを作成しました。これは上記の NumberHelper です。

およびビルドスクリプトで:

    user(someRole) { user, number ->
         it.someProperty = number.roll() // here, an exception throw
    }


    groovy.lang.MissingMethodException: No signature of method: xxx.xx.x.user.biz.Number,roll() is applicable for argument types

これらの情報は、理由を見つけるのに十分ですか?

そして、答えてくれてありがとう、ありがとう:)

4

1 に答える 1

0

元のロール メソッドも静的である限り、機能するはずです。これは、groovy 1.8.6 でうまく機能します。

class NumberHelper {
    static def roll(num) {
        return new Random().nextInt(num) + 1
    }

    static def rollOnce = NumberHelper.&roll
}

def roll = NumberHelper.roll(6)
assert roll <= 6 && roll >= 1

rollOnce = NumberHelper.rollOnce(10)
assert rollOnce <= 10 && rollOnce >= 1
于 2012-06-13T13:11:26.463 に答える