2
私はマップのリストを持っています。リスト上の特定のマップを取得し、特定のキーの値を返したいとします。 私は抜けているものがあると確信していますが、私はこの作業をすることができません。私はいくつか失敗した試みを持っています:Groovy:マップのリストをキーで検索/返す
void "find map by key in a list of maps"() {
given: "a list of maps"
List favorites = [
[fruit: 'apple'],
[color: 'yellow'],
[activity: 'reading']]
when:
String favoriteColor = favorites.each {
it.find { key, value ->
key == 'color'
return value
}
}
// String favoriteColor = favorites.each { it['color'] }
// String favoriteColor = favorites.find { it.key == 'color' }
// String favoriteColor = favorites.collect { it['color'] }
// String favoriteColor = favorites*.get('color')
// String favoriteColor = favorites*.get('color').value
// String favoriteColor = favorites.collect { it['color'] }.value as String
// String favoriteColor = favorites.find { it['color'] }.value as String
then:
favoriteColor == 'yellow'
}
これを行うには清潔な方法がありますか?
'キー==「color''を行うことができます - これは何もしません。 –
@OliverCharlesworthこれは 'find'クロージャのコンテキストで行います –
@tim_yates - 暗黙の' return'としてのみ - このクロージャは明示的な 'return'を持っています。 –