1

私はgroovyにかなり慣れておらず、いくつかの既存のコードを見て、これを確認します。

def timestamp = event.timestamp[]

この行で空の角かっこが何をしているのかわかりません。ここで定義されるタイムスタンプは長い値を受け取る必要があることに注意してください。

このコードでeventは、は巨大なコードベースのどこかで定義されているので、それが何であるかはわかりません。これはマップだと思いましたが、マップ上でこの表記を使用して別のテストコードを記述した場合、角かっこでタイムスタンプに空の値が割り当てられます。ただし、上記のコードでは、正しい(null以外の)値を取得するために角かっこが必要です。

いくつかの簡単なグーグルはあまり役に立ちませんでした(「[]」で検索するのは難しい)。

編集:eventとevent.timestampは両方ともzero.core.groovysupport.GCAccessorオブジェクトであることが判明し、以下の答えが示すように、[]はこれらのオブジェクトでgetAt()を呼び出し、値(この場合は長い)を返す必要があります)。

4

3 に答える 3

2

角かっこはそのオブジェクトの基になるgetAt(Object)メソッドを呼び出すため、その行はおそらくそのオブジェクトを呼び出しています。

私は小さなスクリプトを作成しました:

class A { 
    def getAt(p) { 
        println "getAt: $p"
        p 
    }
}
def a = new A()
b = a[]
println b.getClass()

そして、パラメータとして渡された値を返しました。この場合、ArrayList。たぶん、そのタイムスタンプオブジェクトにはいくつかのメタプログラミングがあります。def timestampコードを実行した後、何が含まれますか?

グルーヴィーなバージョンもチェックしてください。

于 2012-09-11T17:48:39.830 に答える
0

コンピューターではありませんが、メソッドを呼び出してevent.timestamp空のリストをパラメーターとして渡しているようです。

と同じ:

def timestamp = event.timestamp( [] )
于 2012-09-11T17:40:24.963 に答える
0

空のリスト、これを見つけまし。多少関連する/おそらく役立つ質問 here .

于 2012-09-11T16:56:10.260 に答える