Mam metodę, która powinna przekonwertować listę na Option
obiektu lub None
, jeśli lista jest pusta.Konwertuj listę do opcji, jeśli jest ona wypełniona
def listToOption(myList: List[Foo]): Option[Bar] = {
if(myList.nonEmpty) Some(Bar(myList))
else None
}
case class Bar(fooList: List[Foo]) {}
Z jakiegoś powodu moje rozwiązanie wydaje się raczej nieeleganckie, a nie sposób Scala. Wygląda na to, że powinienem móc użyć metody na List
, żeby robić tego rodzaju rzeczy, ale nie mogę tego objąć.
Czy jest to sposób podobny do Scala?
I pierwsza myśl, że chciałeś głowę listy, gdy są obecne, ale potem ponownie przeczytać swoje pytanie, naprawdę nie rozumiem, dlaczego chciałbyś to zrobić. Trudno znaleźć idiomatyczny sposób robienia rzeczy, gdy nie jest to typowa operacja. Byłoby miło, gdybyś mógł wyjaśnić, do czego zamierzasz użyć tej funkcji. –
Z szerszej perspektywy było już dla mnie jasne, że mam problemy z projektowaniem w tej klasie, z którą pracuję, ale zdecydowałem się nie refaktoryzować klasy i zamiast tego staram się napisać coś eleganckiego, biorąc pod uwagę dziwne ograniczenia. Moje rozwiązanie "if-else" było po prostu słabe i pomyślałem, że może być lepszy sposób na zrobienie tego. –
Robię Scalę przez około 9 miesięcy i naprawdę uważam, że jest niesamowita, ale to zarówno błogosławieństwo, jak i przekleństwo, że możesz robić rzeczy dokładnie tak, jak chcesz to zrobić. Oddałbym refrakcję z tego kodu. Cóż, dziękuję za wyjaśnienia i kodowanie GLHF Scala! –