2

私は次のようなGroovyDSLスクリプトを持っています:

entity(attribute1:"one", attribute2:"two")

ここまでは順調ですね。スクリプトを実行し、スクリプトのデリゲートをエンティティが定義されているクラスに設定すると、クラスがすべてを処理します。

今私はこれをしたい:

entity(attibute1:(subattribute1:"one", subattribute2:"two"))

これはどういうわけか構文的に可能ですか?(subattribute1: "one"、subattribute2: "two")自体は何の意味もないので、私はそれを可能にする気づいていないGroovyの魔法があるかどうか疑問に思っていますが、そうではないと思います。

そして、私はしたくない

entity(attibute1:[subattribute1:"one", subattribute2:"two"])

私はそれがうまくいくことを知っていても。単なる構文設定。

4

1 に答える 1

2

いいえ、角括弧を使用する必要があります(不要だと言ったように)。

最初の例:

entity(attribute1:"one", attribute2:"two")

実際に呼び出すためのショートカットです:

entity( [ attribute1:"one", attribute2:"two" ] )

そのため、角括弧が必要になります (attribute1キーにマップが含まれていることを示すため)、または次のような別のメソッド名を括弧の前に付ける必要があります。

entity(attibute1:attribute(subattribute1:"one", subattribute2:"two"))
于 2011-08-05T13:58:50.767 に答える