2011-08-08 83 views
5

標題可能會引起誤解。我真正想要的是知道控制器內封閉的名稱。但是Groovy中的閉包總是匿名的,所以沒有閉包本身的名字。但是,閉包被分配給一個變量,我想知道是否可以得到該變量的名稱。也許一個例子會有所幫助。在一個Grails控制器可以想象我有以下幾點:在Groovy中,有沒有辦法知道持有閉包的變量的名稱?

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

在地圖稱爲結果有所謂的「方法」,我想分配給這個封閉的名稱(或變量保持關閉更精確的元素)。這可能嗎?這裏的想法是我想概括結果圖,並想自動填充名爲'方法'的元素。本能地感覺這應該是可能的,但我還沒有發現任何類似的用例來說明如何。任何幫助非常感謝。

回答

9

我不認爲你可以在一般情況下獲得變量的名稱。這只是一個參考,關閉可以分配給其中的很多人。

這是非常簡單的,但是,要在控制器代碼當前操作的名稱:

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

documentation

相關問題