Dla mnie jest to klasyczny przypadek użycia monadycznego interfejsu użytkownika.
for {
opt <- iterable
t <- opt
} yield t
To właśnie cukier dla rozwiązania flatMap
opisanej powyżej, a to wywołuje identyczną kodu bajtowego. Jednak składnia ma znaczenie i uważam, że jednym z najlepszych momentów użycia monostycznej składni Scala jest for
, gdy pracujesz z Option
, szczególnie w połączeniu z kolekcjami.
Myślę, że to sformułowanie jest znacznie bardziej czytelne, szczególnie dla osób niezbyt zaznajomionych z programowaniem funkcjonalnym. Często próbuję zarówno monadycznych, jak i funkcjonalnych wyrażeń pętli i widzę, co wydaje się bardziej proste. Myślę, że flatMap to trudne imię dla większości ludzi do grokowania (a tak naprawdę, wywołanie go >>=
czyni mnie bardziej intuicyjnym).
Wiedząc, kim jesteś (z listy mailingowej scala-user), masz rację Jestem pewien (nie mam dostępu do mojego dewelopera Scala w tej chwili :-). Czy możesz wyjaśnić nieco, jak to działa. Obiecuję, że nie jestem idiotą, ale nie mam pojęcia, jak powinienem dostać to ze skaladoku. –
Czy nie byłoby to "flatMap {_ elements}"? (Znowu przeczytałem skaladok!) –
Byłoby wspaniale zobaczyć więcej guru Scala na StackOverflow. Lista mailingowa scala-user zapełnia moją skrzynkę pocztową tajemnymi argumentami przez przerwę/kontynuację :-) –