Wpis z mikrobloga

@archlinuxuser: O kurcze, muszę przyznać, że szybko czytasz :) Postaram się napisać o nich jak najbardziej użytecznie. Napiszę co to jest i co fajnego dostajemy w Scali jeśli z naszych klas zrobimy monady :)
  • Odpowiedz
@moriturius: Dobra do nauczenia, podobnie jak Groovy, którego też nie lubię ;).
Ja tam nie potrzebuję się tego uczyć, potrzebuję prostego (w znaczeniu KISS) i pragmatycznego języka a nie generatorów accidental complexity ;).
  • Odpowiedz
@archlinuxuser: No scala do najprostszych nie należy i to jest chyba jej największy problem ( ͡° ʖ̯ ͡°). Ja długo nie mogłem patrzeć na scalę, ze względu na to jak wyglądała i dlatego, że próg wejścia był dość wysoki. Jakoś to jednak przebolałem i teraz strasznie trudno mi pogodzić się z Javą, która w porównaniu wygląda jak narzędzie z kamienia i patyka ;)

Tak czy inaczej,
  • Odpowiedz
@moriturius: Trochę faila zaliczyłeś. Trochę bez sensu moim zdaniem pisać o czymś co się słabo ogarnia.

Czemu nie po prostu .map? flatMap generalnie używa się do czegoś zupełnie innego. Przykłady też słabe bo nie uciekasz od nulla (nadal w obrębie klasy używasz nulla i ofNullable), dodatkowo Book::getAuthor nie jest skrótem od book -> book.getAuthor(), "Optional" wcale nie jest "underestimated" tylko szumu o tym jest pełno, flatMap wcale nie jest "most used
  • Odpowiedz
@hbpitero: No faktycznie nie powinno się pisać o czymś co się słabo ogarnia :)

Gdybym użył .map zamiast .flatMap dostałbym w wyniku Optional> - nie do końca o to chodziło. Byłbym też wdzięczny gdybyś mi wytłumaczył do czego się .flatMap używa :)

Przykłady też słabe bo nie uciekasz od nulla (nadal w obrębie klasy używasz nulla i
  • Odpowiedz
@moriturius: Masz rację, więc tak na szybko

Musiałeś coś pomieszać w swoim kodzie, gdyż map z Optional nie dbędzie wymagać funkcji mapującej Optional na X tylko T na X, więc sytuacji z Optional> by tutaj nie było. Możemy najzwyczajniej mapować w najzwyklejszy sposób zapominając o optionalach:
  • Odpowiedz
Musiałeś coś pomieszać w swoim kodzie


Proponuję nie odpisywać jednak "na szybko" tylko sprawdzić swoją wiedzę i kontekst. W moich przykładach wszystkie gettery zwracają Optional. W takim układzie:

book.map(Book::getAuthor).map(Author::getName)
  • Odpowiedz
@moriturius: Faktycznie mnie zaskoczyłeś, najbadziej z nie-leniwym wywołaniem map.

Nie mniej nie "promowałbym" getterów setterów i flatMap w taki sposób. A już w szczególności, aby gettery i settery zwracały inny typ niż typ atrybutu.
  • Odpowiedz