
Spread Operator w Ruby i Ruby Ranges
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:
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: