def getOr(key: String, onError: String => Unit): Option[Country]
Takie cudo to pasuje to funkcyjnych kolekcji jak pięść do oka. Słusznie, że czegoś takiego nie ma w standardowym API. Poza tym czemu key
ma typ na sztywno String
, a wartość zwracana to Country
? Zapomniałeś o generykach?
Wadą dodawania nowej metody w podklasie jest to, że twoja podklasa nie jest obecna w sygnaturach metod z biblioteki standardowej, więc musisz sobie ją czasem konwertować, by mieć tę swoją metodę, np:
val map = List("1", "2", "3").groupBy(identity) // `mapa` jest typu Map z biblioteki standardowej
val myMap = MyMap(map: _*) // konwertujemy z powrotem na podklasę - uwaga to zajmuje sporo czasu bo cała mapa jest budowana od nowa
myMap.getOr("wut", _ => sys.exit(5))
Implicity będą lepiej działać, bo nie wymagają przepakowania kolekcji.