Mam następujący przypadek użycia, która występuje często w moim kodu:Jak przekonwertować listy [A] do listy [B] Używając niejawna konwersja
- Kolekcja [A]
- Pośrednia konwersja a do B
i chcę uzyskać zbiór B. mogę używać niejawnie jak następuje:
case class Items(underlying:List[B])
import B._
def apply(a:List[A]):Items = {
val listOfB= a.map {implicitly[A=>B]}
Items(listOfB)
}
Jaki jest najbardziej elegancki sposób na zrobienie tego w Scali, być może przy pomocy Scalazu zrobić to samo?
Edytuj: celem mojego pytania jest znalezienie idiomatycznego sposobu, wspólnego podejścia bibliotek/programistów. W takim sensie rozwijanie mojego własnego rozwiązania pimp-my-library jest czymś, czego nie lubię, ponieważ inni ludzie piszący mój kod nie będą wiedzieli o istnieniu tej konwersji i nie będą jej używać, i będą przepisywali swoje własne. Opowiadam się za użyciem podejścia biblioteki do tych wspólnych funkcji i dlatego zastanawiam się, czy w Scalaz istnieje taka funkcja.
Czy jest to część niektórych standardowych bibliotek? Nienawidzę wymyślania na nowo koła – Edmondo1984
@ Edmondo1984: nie wiem, napisałem to od zera właśnie teraz, ale mogę też wymyślić nowe koło. BTW przeczytać ponownie, uogólniłem rozwiązanie, więc potrzebna jest tylko jedna niejawna konwersja 'convList' dla wszystkich typów konwertowalnych. –