2016-03-02 103 views
0

當我輸出一個屬性時,我想我得到了閉包的引用/指針而不是預期的返回值。Closure返回其引用/指針而不是返回值

例如,對於以下屬性:${g.goalsAgainstAverage}

<td header="stathdr5 stathdr${g.leagueId} stathdrgt${g.leagueId}_${g.gameTypeId}">${g.goalsAgainstAverage}</td> 

將輸出:

<td header="stathdr5 stathdr1 stathdrgt1_3">com.mgs.S[email protected]61df269d</td> 

這裏是服務生成的值(參見calcGoalsAgainstAverage):

import grails.transaction.Transactional 

@Transactional 
class StatService { 

    def serviceMethod() { 

    } 

    def getSeasonStats(Long userId, Long seasonId){ 

     def seasonRaw = Game.createCriteria().list{ 
      ... 
     } 

     def seasonStats = seasonRaw 
     .groupBy { it.leagueId } 
     .collect { leagueId, records -> 
      [ 
       ... 
       gameTypes: records.collect { 
        [ 
         ... 
         goalsAgainstAverage: {calcGoalsAgainstAverage(it.secondsPlayed, it.minutesPlayed, it.gameInMinutes, it.goalsAgainst)} 
        ] 
       } 
      ] 
     } 
     return seasonStats 
    } 

    double calcGoalsAgainstAverage(int secondsPlayed, int minutesPlayed, int gameInMinutes, int goalsAgainst){ 
     ... 
    } 
} 

回答

4

你正在返回一個封閉...

要麼改變:

goalsAgainstAverage: {calcGoalsAgainstAverage(it.secondsPlayed, it.minutesPlayed, it.gameInMinutes, it.goalsAgainst)} 

goalsAgainstAverage: calcGoalsAgainstAverage(it.secondsPlayed, it.minutesPlayed, it.gameInMinutes, it.goalsAgainst) 

或者,改變

${g.goalsAgainstAverage} 

${g.goalsAgainstAverage()} 
+0

我是個白癡。我有你的第一個建議實施,但我得到了預期的參數和傳遞之間的鑄造問題有關的錯誤。如果我能夠正確閱讀錯誤信息,我會在昨天看到這一點,併爲自己省去了一些悲傷。 – TekiusFanatikus