Do you want to pick up from where you left of?
Take me there

Βασικά

Κάνοντας την αρχή, βασικοί τύποι δεδομένων και βασικές λειτουργίες.

Κάνοντας την αρχή

Εγκατάσταση της Elixir

Οδηγίες εγκατάστασης για όλα τα λειτουργικά συστήματα μπορούν να βρεθούν στο elixir-lang.org, στον οδηγό Installing Elixir.

Αφού εγκαταστήσετε την Elixir, μπορείτε έυκολα να βρείτε την εγκαταστημένη έκδοση.

% elixir -v
Erlang/OTP {{ site.erlang.OTP }} [erts-{{ site.erlang.erts }}] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]

Elixir {{ site.elixir.version }}

Δοκιμάζοντας τον Διαδραστικό Τρόπο

Η Elixir περιέχει το IEx, ένα διαδραστικό κέλυφος, το οποίο μας επιτρέπει να επιβεβαιώνουμε εκφράσεις της Elixir καθώς τις γράφουμε.

Για να ξεκινήσουμε, ας γράψουμε iex:

Erlang/OTP {{ site.erlang.OTP }} [erts-{{ site.erlang.erts }}] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]

Interactive Elixir ({{ site.elixir.version }}) - press Ctrl+C to exit (type h() ENTER for help)
iex>

Σημείωση: Στο PowerShell των Windows, θα πρέπει να γράψετε iex.bat.

Ας προχωρήσουμε τις δοκιμές μας γράφοντας μερικές απλές εκφράσεις:

iex> 2+3
5
iex> 2+3 == 5
true
iex> String.length("The quick brown fox jumps over the lazy dog")
43

Μην ανησυχείτε αν δεν καταλαβαίνετε όλες τις εκφράσεις ακόμα, ελπίζουμε όμως να πιάνετε το νόημα.

Βασικοί Τύποι Δεδομένων

Ακέραιοι

iex> 255
255

Υπάρχει προεγκατεστημένη υποστήριξη για δυαδικούς, οκταδικούς και δεκαεξαδικούς αριθμούς:

iex> 0b0110
6
iex> 0o644
420
iex> 0x1F
31

Κινητής Υποδιαστολής

Στην Elixir, οι αριθμοί κινητής υποδιαστολής απαιτούν ένα δεκαδικό ψηφίο μετά από τουλάχιστον ένα ψηφίο. Έχουν 64 μπιτ διπλής ακρίβειας και υποστηρίζουν το e για τους εκθετικούς αριθμούς:

iex> 3.14
 3.14
iex> .14
** (SyntaxError) iex:2: syntax error before: '.'
iex> 1.0e-10
1.0e-10

Δυαδικές Τιμές

Η Elixir υποστηρίζει τις τιμές true και false σαν δυαδικές. Οποιαδήποτε τιμή εκτός των false και nil στέκεται σαν αληθής (truthy)

iex> true
true
iex> false
false

Άτομα

Ένα άτομο είναι μια σταθερά της οποίας το όνομα είναι και η τιμή της. Αν είστε εξοικειωμένοι με την Ruby, τα άτομα είναι συνώνυμα με τα Σύμβολα:

iex> :foo
:foo
iex> :foo == :bar
false

Οι δυαδικές τιμές true και false είναι επίσης τα άτομα :true και :false αντίστοιχα.

iex> is_atom(true)
true
iex> is_boolean(:true)
true
iex> :true === true
true

Τα ονόματα των ενοτήτων (modules) στην Elixir είναι επίσης άτομα. Το MyApp.MyModule είναι ένα έγκυρο άτομο, ακόμα και αν δεν έχει οριστεί τέτοια ενότητα ακόμα.

iex> is_atom(MyApp.MyModule)
true

Τα άτομα επίσης χρησιμοποιούνται για να αναφερθούμε σε κάποια ενότητα από τις βιβλιοθήκες της Erlang, συμπεριλαμβανομένων των ενσωματωμένων.

iex> :crypto.strong_rand_bytes 3
<<23, 104, 108>>

Αλφαριθμητικά

Τα αλφαριθμητικά στην Elixir είναι κωδικοποιημένα σε UTF-8 και βρίσκονται μέσα σε διπλά εισαγωγικά.

iex> "Hello"
"Hello"
iex> "dziękuję"
"dziękuję"

Τα αλφαριθμητικά υποστηρίζουν αλλαγές γραμμών και ακολουθίες διαφυγής:

iex> "foo
...> bar"
"foo\nbar"
iex> "foo\nbar"
"foo\nbar"

Η Elixir επίσης υποστηρίζει πιο πολύπλοκους τύπους δεδομένων. Θα μάθουμε περισσότερα για αυτούς όταν μάθουμε για τις Συλλογές και τις Συναρτήσεις.

Βασικές Λειτουργίες

Αριθμητικές

Η Elixir υποστηρίζει τους βασικούς τελεστές +, -, *, και /, όπως θα περιμένατε. Είναι σημαντικό να παρατηρήσουμε ότι ο τελεστής / πάντα επιστρέφει αριθμό κινητής υποδιαστολής:

iex> 2 + 2
4
iex> 2 - 1
1
iex> 2 * 5
10
iex> 10 / 5
2.0

Αν χρειάζεστε ακέραια διαίρεση ή το υπόλοιπο της διαίρεσης, η Elixir περιέχει δύο χρήσιμες συναρτήσεις για να το πετύχει:

iex> div(10, 5)
2
iex> rem(10, 3)
1

Δυαδικές

Η Elixir παρέχει τους δυαδικούς τελεστές ||, && και !. Αυτοί υποστηρίζουν όλους τους τύπους:

iex> -20 || true
-20
iex> false || 42
42

iex> 42 && true
true
iex> 42 && nil
nil

iex> !42
false
iex> !false
true

Υπάρχουν τρεις πρόσθετοι τελεστές το πρώτο όρισμα των οποίων πρέπει να είναι δυαδικός (true και false):

iex> true and 42
42
iex> false or true
true
iex> not false
true
iex> 42 and true
** (ArgumentError) argument error: 42
iex> not 42
** (ArgumentError) argument error

Σημείωση: Οι συναρτήσεις and και or της Elixir στην πραγματικότητα αντιστοιχούν στις andalso και orelse της Erlang.

Σύγκριση

Η Elixir έρχεται με όλους τους τελεστές σύγκρισης που έχουμε συνηθίσει: ==, !=, ===, !==, <=, >=, < και >.

iex> 1 > 2
false
iex> 1 != 2
true
iex> 2 == 2
true
iex> 2 <= 3
true

Για αυστηρή σύγκριση ακέραιων και κινητής υποδιαστολής χρησιμοποιήστε τον τελεστή ===:

iex> 2 == 2.0
true
iex> 2 === 2.0
false

Ένα σημαντικό χαρακτηριστικό της Elixir είναι ότι οποιοιδήποτε δύο τύποι μπορούν να συγκριθούν, το οποίο είναι πολύ χρήσιμο στις ταξινομήσεις. Δεν χρειάζεται να αποστηθίσουμε την σειρά ταξινόμησης, αλλά είναι σημαντικό να την γνωρίζουμε:

αριθμός < άτομο < αναφορά < συνάρτηση < θύρα < pid < τούπλα < χάρτης < λίστα < bitstring

Αυτό μπορεί να οδηγήσει σε μερικές ενδιαφέρουσες, αλλά ισχύουσες, συγκρίσεις τις οποίες μπορεί να μην βρείτε σε άλλες γλώσσες:

iex> :hello > 999
true
iex> {:hello, :world} > [1, 2, 3]
false

Ενσωμάτωση Αλφαριθμητικών

Αν έχετε χρησιμοποιήσει την Ruby, η ενσωμάτωση αλφαριθμητικών στην Elixir θα σας φανεί γνώριμη:

iex> name = "Sean"
iex> "Γειά σου #{name}"
"Γειά σου Sean"

Σύνδεση Αλφαριθμητικών

Η σύνδεση αλφαριθμητικών χρησιμοποεί τον τελεστή <>:

iex> name = "Sean"
iex> "Γεια σου " <> name
"Γεια σου Sean"
Έπιασες λάθος ή θέλεις να συνεισφέρεις στο μάθημα; Επεξεργαστείτε αυτό το μάθημα στο GitHub!