1
我遵循Xtend教程和電影例子。在本教程的最後,你可以找到這個問題:Xtend「電影例子」最佳答案
@Test def void sumOfVotesOfTop2() {
val long sum = movies.sortBy[ -rating ].take(2).map[ numberOfVotes ].reduce[ a, b | a + b ]
assertEquals(47_229L, sum)
}
首先,電影是由等級排序,那麼我們就兩個最好的。接下來,使用地圖功能將電影列表變成其numberOfVotes列表。現在我們有一個List,可以通過添加值將其縮減爲單個Long。
您也可以使用reduce而不是map並減少。你知不知道怎麼?
我的問題是:什麼是最後一個問題的最佳答案?
我找到了一種不使用map()擴展方法來計算相同「sum」值的方法,但對我來說似乎很糟糕。這是我的解決方案:
assertEquals(47229, this.movies.sortBy[ -rating ].take(2).reduce[m1, m2 | new Movie('', 0, 0.0, m1.numberOfVotes + m2.numberOfVotes,null)].numberOfVotes)
有沒有更好的(和更清潔)的方式來做到這一點?
我同意,但Xtend在教程中,問題3表示可以替換'map [numberOfVotes] .reduce [a,b | a + b]「,這是我不明白的。真的有可能有一個很好的方式來做到這一點? – Antwane 2013-03-21 10:37:53