Kontynuuję swoją przygodę z Elixir. W zeszłym tygodniu, udało mi się postawić środowisko – zainstalować Elixir, Erlang jak i wybrać plugin do edytora by chociażby mieć kolorowanie składni. W tym tygodniu koncentruje się na poznaniu narzędzi z których będę korzystał przy pisaniu aplikacji. Jeszcze nie składnia, jeszcze nie jakiś gotowy program. Teraz jest pora na poznanie tego z czym przyjdzie mi pracować przez najbliższe tygodnie – jakie narzędzia dostarcza Elixir i co z nimi mogę zrobić.
side note: Jeżeli jesteś zapisany do newslettera, wiesz już że na zabawę mam mało czasu na razie, więc też dużych postępów nie będzie w każdym artykule. Ale będzie ich tyle na ile mi moje skromne 2h z napisaniem artykułu wystarczą. Jak w przyszłości uda mi się znaleźć więcej czasu, to i artykuły będą się częściej pojawiać. A jeżeli chcesz być na bieżąco i mieć informację z pierwszej ręki przed wszystkimi innymi, zapisz się do mnie do newslettera :)
W zeszłym tygodniu poznaliśmy pierwsze z narzędzi z którym przyjdzie mi pracować – interaktywna linia polecań iex
. Ze względu na to, że jest to interaktywna linia poleceń, poznamy pewnych kilka zagadnień języka, ale tylko kilka :)
iex
Jest to typowy REPL, w którym możemy bawić się podstawami języka jak sprawdzać pewne pomysły. REPL jest super jeżeli chcemy coś sprawdzić. Ja do tej pory korzystam z LINQ Pad przy C# jak mam jakieś wątpliwości lub nie jestem pewny metody.
Na przykład można z miejsca sprawdzić czy potrafimy wypisać tekst na ekran – niech będzie on tym najbardziej popularnym: Hello, World!
iex(1)> "Hello, " + "World!" ** (ArithmeticError) bad argument in arithmetic expression :erlang.+("Hello, ", "World!")
Jak widać już wiemy, że nie potrafimy dodawać i łączyć ciągi znaków ;) Ale zaś nie potrzebujemy konkatenacji, możemy wypisać sobie po prosty Hello, World!
iex(1)> "Hello, World!" "Hello, World!"
Ale dzięki zastosowaniu +
dowiedzieliśmy się, że aby połączyć znaki trzeba użyć <>
:
iex(2)> "Hello, " <> "World!" "Hello, World!"
Kolejną rzeczą która mnie bardzo interesuje i którą lubiłem zarówno w Objective-C jak i lubię w JavaScript, to tak zwane wartości true
i false
. Tak zwane:
if(smth) { } if(!smth) { }
Powiem tak, w C# cały czas to piszę aż tak bardzo się do tego przyzwyczaiłem. A jak to wygląda w Elixir?
iex(3)> true true iex(4)> !true false iex(5)> !nil true iex(6)> !"Hello" false iex(7)> !0 false iex(8)> false false iex(9)> !false true iex(10)> !"" false
Boom! :) super, czyli konwersja do boolean jest dość ciekawa, fajne i taka jaką lubię bez quirks z JavaScript (!'' === true
).
Do tego możemy łączyć warunki za pomocą and
, or
, not
, &&
, ||
jak i !
– fajnie.
Wiem, na razie to prawie instrukcja Elixira, ale od czegoś trzeba zacząć. To tyle jeżeli chodzi o iex
, możliwe, że będę do niego częściej wracał później jak już opanuje podstawy.
Mix
mix
jest kolejnym narzędziem, z którego chyba będziemy korzystać i to dość często. Z miejsca można zapoznać się z listą poleceń:
mix help
Na razie ograniczmy się do może trzech które będą nam potrzebne:
mix new mix compile mix test
Pierwszy odpowiedzialny jest za tworzenie nowego projektu, drugi za kompilacje a trzeci zaś za odpalenie testów w tym projekcie. Ten mix tutaj to trochę taki Yeoman połączony z domyślnym taskiem budującym całość napisanym w Gulp albo w Grunt i zawierającym z miejsca załadowane parę fajnych pluginów.
Mix New
mix new
tworzy nam projekt zgodnie z szablonem, czyli za każdym razem będziemy mieli taki sam układ plików i folderów. By stworzyć nowy projekt wystarczy napisać
mix new elixir02
Co wygeneruje nam katalog elixir02 a w nim:
./.gitignore ./README.md ./mix.exs ./config/config.exs ./lib/elixir02.ex ./test/elixir02_test.exs ./test/test_helper.exs
Gdzie /lib/elixr02.ex
to nasz kod aplikacji i /test/elixir02_tests.exs
to testy mu odpowiadające. Nazwa katalogu testów ma duże znaczenie i jak będzie inna to testy wam nie zadziałają (domyślnie).
config.exs
odpowiedzialny jest za konfigurację projektu ale przed tym zanim cokolwiek zostanie załadowane. Na przykład tutaj możemy mieć ładowanie różnych konfiguracji w zależności od środowiska z jakim mamy styczność. Taki fajniejszy i bardziej rozbudowany nasz web.config
z opcją debug/release itp.
test_helper.exs
odpala testy.
mix.exs
służy do konfigurowania naszego projektu.
Mix compile
mix compile
służy do kompilowania aplikacji do pliku app. To co jest fajne, mając skompilowany projekt możemy odpalić interaktywną listę poleceń w kontekście naszej aplikacji, co da nam dostęp do typów i innych rzeczy udostępnionych przez nasz kod. W katalogu projektu elixir02:
iex -S mix
Mix Test
mix test
skopiluje nasz kod i wykona testy jednostkowe z katalogu test. Super szybko i sprawnie, dzięki czemu naprawdę chce się pisać testy ;)
Podsumowanie
To tyle, większość czasu z tego co widzę to będzie jednak siedzenie w iex :) więc dobrze, cieszę się. Mam nadzieję, że na bazie tego co teraz wiem, w przyszłym tygodniu napiszę pierwszy Hello, World!
Z odpowiednim zbiorem testów ;) Początku bywają nuudne, ale aż żałuje, że już więcej czasu dzisiaj nie mam :(
[…] wiedzę swoją z ostatniego posta i dla tego celu stworzyłem prosty projekt z wykorzystaniem mix. Na tym projekcie następnie […]
[…] samym początku poznaliśmy pierwszy typ aplikacji jakie możemy stworzyć z wykorzystaniem mix – po prostu […]
Comments are closed.