Spread Operator w Ruby i Ruby Ranges

7 stycznia 2022
ruby

Wszyscy pamiętamy jak rewolucyjne w świecie JavaScriptu okazało sie wprowadzenie tzw. spread operator wraz ze standardem ES6. Praca z kolekcjami stała się prosta i przyjemna. Łączenie tablic stało się banalne. Można pomyśleć, że to sprawia, że JS jest pod tym względem wyjątkowy…ale nie. Używaliśmy spread operator w Ruby, zanim to stało się modne. Zatem, jeśli chcesz poznać, czym jak wygląda spread operator w Ruby i Ruby Ranges (bardzo ciekawy obiekt), to zapraszam do lektury.

Z mojego doświadczenia Ruby to język, który ma szeroko rozwinięte API jeśli chodzi o operacje wykonywane na kolekcjach. Wszystko dzięki modułowi Enumerable i klasie Array, które dostarczają wszystkich ciekawych funkcjonalności.

Concat

I tak Ruby posiada metodę concat, która służy do łączenia tablic ze sobą, czyli do, akcji, którą bardzo często wykorzystuje się w JS.

Magia Ruby

Pozwól, że pokażę Ci przykład, jakim świetnym językiem jest Ruby. Wykorzystam do tego kilka mniej oczywistych metod tablicowych i inne fajne narzędzie, jakim są Ruby Ranges.

Fake password generator

Napiszmy sobie prosty generator haseł, który możemy wykorzystać do seedowania bazy, mockowania danych testowych albo wygenerowania tymczasowego hasła dla użytkownika.

Wymagania biznesowe:

  • hasło może zawierać małe litery
  • hasło może zawierać duże litery
  • hasło może zawierać cyfry
  • hasło może zawierać znaki specjalne: $, #, *
  • hasło może zawierać losowo wygenerowane słowo z języka Wookie, wykorzystamy gem Faker
  • Jedziemy!

    Hasło może zawierać małe litery

    Nie trzeba nic instalować, wykorzystamy obiekt Range, który pozwala na wygenerowanie zbioru znaków lub liczb z określonego zakresu. Następnie skonwertujemy ten obiekt na tablicę metodą to_a.

    Hasło może zawierać duże litery

    Też wykorzystamy Range. Wystarczy zmienić tylko parametry na duże znaki.

    Hasło może zawierać cyfry

    I znowu Range.

    Hasło może zawierać znaki specjalne: $, #, *

    Tutaj wystarczy prosta tablica

    Łatwo zrobić literówkę i zapomnieć apostrofa, skorzystajmy z bardziej fancy składni.

    Hasło może zawierać losowo wygenerowane słowo z języka Wookie

    Wygląda na najtrudniejszą część, co nie?

    Posiłkuję się metodą split, która, jako separator domyślny przyjmuje spację i rozbija mi wygenerowane zdanie na tablicę słów zrozumiałych dla Chewbacci.

    Generowanie hasła

    Skoro mamy już części składowe pora na wygenerowanie hasła. Poskładajmy najpierw wszystkie kryteria w jedną tablicę.

    Shuffle

    Zamieszajmy z bang method.

    Sample

    Wybierzmy 20 losowych elementów i znów zamieszajmy.

    Join

    Teraz łączymy i mamy gotowe hasło.

    Spread Operator

    Cały kod, z małym refactorem upraszczającym kroki wygląda tak:

    Dużo tego kodu, no i obiecałem Ci spread operator. Otóż, aby połączyć tablice w jedną wystarczy znak *.

    Końcowy kod wygląda tak:

    I działa jak złoto!