Czy można wykonać warunkowe metody collectEntries, takie jak collect?W jaki sposób mogę wykonać warunkową metodę collectEntries w groovy
10
A
Odpowiedz
13
[ a:1, b:2, c:3, d:4 ].findAll { it.value > 2 }
powinien zrobić to
0
To powinno działać:
[a:1, b:2, c:3, d:4].collectEntries {
if (it.value > 2)
["${it.key}": it.value]
}
4
To nie jest tak zwięzły jak findAll jednak tylko dla porządku, można użyć collectEntries
to zrobić:
[ a:1, b:2, c:3, d:4 ].collectEntries {
it.value > 2 ? [(it.key) : it.value] : [:] }
co oznacza
[c:3, d:4]
Using "${it.key}" as done in this answer wydaje się być problematyczna, klucz zakończy się instancją klasy GStringImpl, a nie String.
groovy:000> m = [ a:1, b:2, c:3, d:4 ]
===> [a:1, b:2, c:3, d:4]
groovy:000> m.collectEntries { ["${it.key}" : it.value ] }
===> [a:1, b:2, c:3, d:4]
groovy:000> _.keySet().each { println(it.class) }
class org.codehaus.groovy.runtime.GStringImpl
class org.codehaus.groovy.runtime.GStringImpl
class org.codehaus.groovy.runtime.GStringImpl
class org.codehaus.groovy.runtime.GStringImpl
===> [a, b, c, d]
który nie jest to, co chcesz: zrównanie GroovyStrings do normalnych ciągów oceni false nawet gdy struny wyglądają identycznie.
Powiązane problemy
- 1. Maven - jak wykonać warunkową egzekucję
- 2. Jak zresetować wyśmiewaną metodę statyczną w Groovy?
- 3. W jaki sposób mogę przetestować chronioną metodę w C++?
- 4. W python, w jaki sposób mogę wykonać nieblokujące wywołanie systemowe?
- 5. W jaki sposób mogę zapewnić/zweryfikować metodę chronioną przez Moq?
- 6. W jaki sposób mogę przetestować metodę OnActionExecuting kontrolera asp.net-mvc?
- 7. Właściwy sposób na "warunkową zmianę" w iOS5
- 8. W jaki sposób mogę przechwycić wykonanie wszystkich metod w aplikacji Java za pomocą Groovy?
- 9. Czy można wykonać warunkową projekcję treści (transclusion) w kątowym 2+
- 10. Jak wykonać arytmetyczną tablicę warunkową w tablicy numpy?
- 11. W jaki sposób wykonać autouzupełnianie kodu?
- 12. Jak mogę wykonać metodę w module z konsoli Rails?
- 13. W jaki sposób mogę nadpisać metodę rodzica w coffeescript, gdy wciąż mogę zadzwonić do rodzica
- 14. W Django w jaki sposób mogę naśladować dwuetapową metodę dodawania użytkowników przez administratora dla własnych modeli?
- 15. Jak wykonać odniesienie jest równe w Groovy?
- 16. W jaki sposób mogę uzyskać dostęp do gorącej wymiany Groovy w intelli?
- 17. W jaki sposób groovy dodaje nowe metody do klas Java?
- 18. sortowanie listy w Groovy w niezwykły sposób
- 19. Groovy wykonać polecenie „cp *” shell
- 20. W jaki sposób zaimplementowano metodę ustawiającą zatrzymanie za pomocą @synthesize?
- 21. Jak wykonać kompilację warunkową na podstawie nazw celów?
- 22. W jaki sposób mogę wykonać niestandardowe wykonanie narzędzia MSBuild Target w oparciu o sygnaturę czasową pliku?
- 23. W jaki sposób mogę wykonać toczący się suma po kolejnych wierszach gry w R
- 24. W jaki sposób mogę wykonać iterację strumienia w języku Java, używając?
- 25. W Clojure, w jaki sposób mogę wykonać wydajną wersję "częstotliwości" z przetwornikami?
- 26. (W jaki sposób) Czy mogę wykonać pojedynczy plik .cmake w systemie Windows?
- 27. Jak mogę przechwycić wywołanie konstruktora w Groovy?
- 28. Podczas korzystania ze skryptów Groovy przy użyciu słoika groovy-all, w jaki sposób określasz ścieżkę klas?
- 29. W jaki sposób zaimplementowano metodę synchronizowaną na AnyRef?
- 30. W jaki sposób TestNG wywołuje metodę testową wykorzystującą wiele wątków?
Zgłasza NPE bez zmian. Potrzebujesz "else [:]' –