Elixir - typy danych
Aby móc używać dowolnego języka, musisz zrozumieć podstawowe typy danych obsługiwane przez język. W tym rozdziale omówimy 7 podstawowych typów danych obsługiwanych przez język elixir: liczby całkowite, zmiennoprzecinkowe, wartości logiczne, atomy, łańcuchy, listy i krotki.
Typy liczbowe
Elixir, jak każdy inny język programowania, obsługuje zarówno liczby całkowite, jak i zmiennoprzecinkowe. Jeśli otworzysz powłokę eliksiru i wprowadzisz dowolną liczbę całkowitą lub zmiennoprzecinkową jako dane wejściowe, zwróci ona swoją wartość. Na przykład,
42
Uruchomienie powyższego programu daje następujący wynik -
42
Możesz także zdefiniować liczby w postaci ósemkowej, szesnastkowej i binarnej.
Ósemkowe
Aby zdefiniować liczbę w systemie ósemkowym, należy poprzedzić ją „0o”. Na przykład 0o52 ósemkowo odpowiada 42 dziesiętnie.
Szesnastkowy
Aby zdefiniować liczbę w systemie dziesiętnym, należy poprzedzić ją „0x”. Na przykład 0xF1 w systemie szesnastkowym odpowiada 241 w systemie dziesiętnym.
Dwójkowy
Aby zdefiniować liczbę w systemie binarnym, należy poprzedzić ją przedrostkiem „0b”. Na przykład 0b1101 w systemie dwójkowym odpowiada 13 w systemie dziesiętnym.
Elixir obsługuje 64-bitową podwójną precyzję dla liczb zmiennoprzecinkowych. Można je również zdefiniować za pomocą stylu potęgowania. Na przykład 10145230000 można zapisać jako 1,014523e10
Atomy
Atomy to stałe, których nazwa jest ich wartością. Można je utworzyć za pomocą symbolu koloru (:). Na przykład,
:hello
Booleans
Elixir obsługuje true i falsejako Booleans. Obie te wartości są w rzeczywistości przypisane do atomów: odpowiednio prawda i: fałsz.
Smyczki
Łańcuchy w Elixirze są umieszczane między podwójnymi cudzysłowami i kodowane w UTF-8. Mogą obejmować wiele wierszy i zawierać interpolacje. Aby zdefiniować ciąg, po prostu wprowadź go w podwójnych cudzysłowach -
"Hello world"
Aby zdefiniować ciągi wielowierszowe, używamy składni podobnej do pythona z potrójnymi podwójnymi cudzysłowami -
"""
Hello
World!
"""
Dowiemy się więcej o łańcuchach, plikach binarnych i listach znaków (podobnych do łańcuchów) w rozdziale o łańcuchach.
Pliki binarne
Pliki binarne to sekwencje bajtów ujęte w << >> oddzielone przecinkiem. Na przykład,
<< 65, 68, 75>>
Pliki binarne są najczęściej używane do obsługi danych związanych z bitami i bajtami, jeśli takie masz. Domyślnie mogą przechowywać od 0 do 255 w każdej wartości. Ten limit rozmiaru można zwiększyć za pomocą funkcji rozmiaru, która mówi, ile bitów powinno zająć przechowywanie tej wartości. Na przykład,
<<65, 255, 289::size(15)>>
Listy
Elixir używa nawiasów kwadratowych do określenia listy wartości. Wartości mogą być dowolnego typu. Na przykład,
[1, "Hello", :an_atom, true]
Listy mają wbudowane funkcje dla nagłówka i końca listy o nazwach hd i tl, które zwracają odpowiednio początek i koniec listy. Czasami, kiedy tworzysz listę, zwróci listę znaków. Dzieje się tak, ponieważ kiedy elixir widzi listę drukowalnych znaków ASCII, wypisuje ją jako listę znaków. Pamiętaj, że ciągi znaków i listy znaków nie są równe. W dalszych rozdziałach omówimy listy.
Krotki
Elixir używa nawiasów klamrowych do definiowania krotek. Podobnie jak listy, krotki mogą mieć dowolną wartość.
{ 1, "Hello", :an_atom, true
Powstaje pytanie - po co podawać jedno i drugie lists i tupleskiedy oboje pracują w ten sam sposób? Cóż, mają różne implementacje.
Listy są w rzeczywistości przechowywane jako listy połączone, więc wstawianie i usuwanie jest bardzo szybkie na listach.
Z drugiej strony, krotki są przechowywane w ciągłym bloku pamięci, co przyspiesza dostęp do nich, ale wiąże się z dodatkowymi kosztami wstawiania i usuwania.