1 lipca moja córcia Iwetka pierwszy raz poleciała samolotem, sama, do Portugalii (w której nawet ja jeszcze nie byłem!)
1 lipca mój (starszy) syn Patryk wyjechał na wakacje.
1 lipca mój (młodszy) syn Maksym miał zaplanowaną pierwszą wizytę w żłobku (ale plany się "odplanowały"). Następnym razem.
I w końcu, 1 lipca zacząłem pierwszy dzień u nowego pracodawcy Citibank International PLC (Publiczna Spółka Akcyjna) Oddział w Polsce jako menedżer ds. rozwoju aplikacji.
Za Wikipedią:
"Menedżerowie jako przedstawiciele kadry zarządzającej cechują się poczuciem odpowiedzialności, strategicznego myślenia i przewidywania."
Mniemam, że od dzisiaj jestem odpowiedzialny i mam poczucie myślenia i przewidywania (niepotrzebne skreślić).
A poważnie, zapominając na moment o tytułach, to przyjdzie mi pracować w bardzo interesującym zespole, z osobami, które znałem z wcześniejszych aktywności około-Scala-owych i które zawsze imponowały mi swoją wiedzą. Teraz jestem częścią tego zespołu! Gratulacje Jacku!
Niewiele się wydarzyło tego pierwszego dnia w nowej pracy - sesja wprowadzająca w tajniki pracy, aby podsumować BHP i podpisaniem umowy.
Jutro kolejny dzień wdrażania zgodnie z wytycznymi działu kadr. W środę powinienem pojawić się już w biurze na Goleszowskiej. Pora zapoznać się z komunikacją miejską, bo dojazd na drugi koniec Warszawy będzie mnie kosztował sporo czasu i przynajmniej 2 przesiadki. Będzie jeszcze więcej czasu na czytanie i słuchanie!
I zadanko w Scali na koniec - co robi poniższy jednolinijkowiec?
s filter (_ != ' ')Można krócej? Ładniej?
Gratuluję rozpoczęcia pracy w Citi, mi przyjdzie jeszcze poczekać kilka ładnych tygodni.
OdpowiedzUsuńJeżeli chodzi o jednolinijkowca, to może ładniej by było (choć to kwestia gustu):
s filterNot (_ == ' ')
Albo można też zdefiniować funkcję sprawdzającą oddzielnie:
def nonSpace(p:Char) = p != ' '
s filter (nonSpace)
Ale sugerowałbym, żeby ta metoda była umieszczona w jakimś zbiorze funkcji tego typu, a nie linijkę nad jej wywołaniem ;)
Niestety Scala nie definiuje metody, która mogłaby przeciążać filterNot i wyglądać tak:
def filterNot(p: A) = filter(p != _)
A wtedy ten jednolinijkowiec mógłby wyglądać tak:
s filterNot (' ')
Doszedłem do wniosku, że można to jednak zrobić tak jak w ostatnim przykładzie. W tym celu należy wykorzystać niejawne konwersje dostępne w Scali. Wystarczy dodać do typu Traversable odpowiednią metodę:
Usuńclass TraversableExtension[A](t: Traversable[A]) {
def filterNot(p: Any) = t.filterNot(p == _)
}
implicit def listToExtension[A](t: List[A]) = new TraversableExtension(t)
implicit def stringToExtension[A](s: String) = new TraversableExtension(s)
a wtedy takie wywołanie jest całkowicie poprawne:
val s = "Hello Beautiful World!"
s.filterNot(' ')