2011-08-08 13 views
5

タイトルが誤解を招く恐れがあります。私が本当に望むのは、コントローラ内のクロージャの名前を知ることです。しかし、Groovyのクロージャは常に匿名であるため、クロージャ自体の名前はありません。しかし、クロージャは変数に割り当てられており、その変数の名前を取得できるかどうかは疑問です。おそらく例が役立つでしょう。私はより正確に閉鎖を保持し、このクロージャの名前(または変数に割り当てる「メソッド」と呼ばれる要素があるの結果と呼ばれるマップでGroovyでは、クロージャを保持する変数の名前を知る方法はありますか?

def get_data = { 
     Map results = [ 'errorCode' = -1, 'method' : 'get_data' ] 
     ... 
     render results as JSON 
    } 

:Grailsのコントローラでは、私は以下の持っている想像します)。これは可能ですか?ここでのアイデアは、結果マップを一般化して、「メソッド」という要素を自動的に作成したいと考えています。本質的に、これは可能であるべきだと感じていますが、私はどのように同様のユースケースを見つけていません。どんな助けでも大歓迎です。

答えて

9

一般的なケースで変数の名前を取得できるとは思いません。これは単なる参考値であり、閉包をそれらの多くに割り当てることができます。

これは、コントローラコードにおける現在のアクションの名前を取得するには、しかし、非常に簡単です:

def get_data = {  
    def results = ['method': actionName] 
} 

documentationを参照してください。

関連する問題