01 lipca 2013

Pierwszy dzień...Chorwacji w UE, dzieci na wakacjach i mojej pracy w Citi

1 lipca Chorwacja oficjalnie wstąpiła do Uni Europejskiej. Gratulacje!

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?

2 komentarze:

  1. Gratuluję rozpoczęcia pracy w Citi, mi przyjdzie jeszcze poczekać kilka ładnych tygodni.

    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 (' ')

    OdpowiedzUsuń
    Odpowiedzi
    1. 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ę:

      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(' ')

      Usuń