Skip to content

Commit

Permalink
Update functions.md (elixirschool#867)
Browse files Browse the repository at this point in the history
* Update functions.md

* Update functions.md

* Update pipe-operator.md

* Update modules.md

* Update mix.md

* Update sigils.md

* Update documentation.md

* Update testing.md

* Update comprehensions.md

* Update strings.md

* Update mix-tasks.md
  • Loading branch information
gemantzu authored and doomspork committed Dec 9, 2016
1 parent 723bb0a commit 41b145f
Show file tree
Hide file tree
Showing 10 changed files with 29 additions and 27 deletions.
2 changes: 1 addition & 1 deletion gr/lessons/basics/comprehensions.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ order: 13
lang: gr
---

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

{% include toc.html %}

Expand Down
8 changes: 4 additions & 4 deletions gr/lessons/basics/documentation.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ IO.puts "Γεια σου, " <> "φιλαράκι."

### Τεκμηρίωση Ενοτήτων

Ο σχολιαστής `@moduledoc` επιτρέπει για τεκμηρίωση σε επίπεδο ενότητας. Συνήθως βρίσκεται ακριβώς από κάτω από τη δήλωση `defmodule` στην κορυφή του αρχείου. Το παρακάτω παράδειγμα δείχνει ένα σχόλια μιας γραμμής μέσα στο σχολιαστή `@moduledoc`.
Ο σχολιαστής `@moduledoc` επιτρέπει την τεκμηρίωση σε επίπεδο ενότητας. Συνήθως βρίσκεται ακριβώς από κάτω από τη δήλωση `defmodule` στην κορυφή του αρχείου. Το παρακάτω παράδειγμα δείχνει ένα σχόλιο μιας γραμμής μέσα στο σχολιαστή `@moduledoc`.

```elixir
defmodule Greeter do
Expand Down Expand Up @@ -155,7 +155,7 @@ $ cd greet_everyone

```

Τώρα αντιγράψτε και επικολλήστε τον κώδικά σας από μάθημα για τον σχολιαστή `@doc` σε ένα αρχείο που ονομάζεται `lib/greeter.ex` και βεβαιωθείτε ότι όλα δουλεύουν από τη γραμμή εντολών. Τώρα που δουλεύουμε μέσα σε ένα project Mix πρέπει να ξεκινήσουμε το IEx λίγο διαφορετικά, χρησιμοποιώντας την αλληλουχία εντολών `iex -S mix`:
Τώρα αντιγράψτε και επικολλήστε τον κώδικά σας από το μάθημα για τον σχολιαστή `@doc` σε ένα αρχείο που ονομάζεται `lib/greeter.ex` και βεβαιωθείτε ότι όλα δουλεύουν από τη γραμμή εντολών. Τώρα που δουλεύουμε μέσα σε ένα project Mix πρέπει να ξεκινήσουμε το IEx λίγο διαφορετικά, χρησιμοποιώντας την αλληλουχία εντολών `iex -S mix`:

```bash
iex> h Greeter.hello
Expand Down Expand Up @@ -188,7 +188,7 @@ iex> h Greeter.hello
end
```

Καθορίζουμε το ζευγάρι κλειδί-τιμή `only: :dev` καθώς δεν θέλουμε να κατεβάσουμε και να συντάξουμε τις εξαρτήσεις αυτές σε ένα περιβάλλον παραγωγής. Αλλά γιατί το Earmark; Το Earmark είναι ένας αναλυτής Markdown για την Elixir το οποίο χρησιμοποιεί το ExDoc για να μετατρέψει την τεκμηρίωσή μας μέσα στα `@moduledoc` και `@doc` για να έχουμε πανέμορφη στην εμφάνιση HTML.
Καθορίζουμε το ζευγάρι κλειδί-τιμή `only: :dev` καθώς δεν θέλουμε να κατεβάσουμε και να συντάξουμε τις εξαρτήσεις αυτές σε ένα περιβάλλον παραγωγής. Αλλά γιατί το Earmark; Το Earmark είναι ένας αναλυτής Markdown για την Elixir ο οποίος χρησιμοποιεί το ExDoc για να μετατρέψει την τεκμηρίωσή μας μέσα στα `@moduledoc` και `@doc` για να έχουμε πανέμορφη στην εμφάνιση HTML.

Είναι σημαντικό να σημειώσουμε σε αυτό το σημείο ότι δεν είστε υποχρεωμένοι να χρησιμοποιήσετε το Earmark. Μπορείτε να αλλάξετε το εργαλείο σήμανσης με άλλα όπως το Pandoc, το Hoedown ή το Cmark. Πάντως θα χρειαστείτε να κάνετε λίγες παραπάνω ρυθμίσεις για τις οποίες μπορείτε να διαβάσετε [εδώ](https://github.com/elixir-lang/ex_doc#changing-the-markdown-tool). Για αυτό το φροντιστήριο θα μείνουμε με το Earmark.

Expand All @@ -204,7 +204,7 @@ Docs successfully generated.
View them at "doc/index.html".
```

Λογικά, αν όλα πήγαν καλά, θα πρέπει να βλέπετε ένα παρόμοιο μήνυμα με το μήνυμα εξόδου στο από πάνω παράδειγμα. Ας δούμε τώρα μεσα στο Mix project μας και να θα πρέπει να δούμε ότι υπάρχει ένας ακόμα φάκελος που ονομάζεται **doc/**. Μέσα του βρίσκεται η δημιουργημένη τεκμηρίωσή μας. Αν επισκεφθούμε την σελίδα index στο browser μας θα πρέπει να δούμε τα παρακάτω:
Λογικά, αν όλα πήγαν καλά, θα πρέπει να βλέπετε ένα παρόμοιο μήνυμα με το μήνυμα εξόδου στο από πάνω παράδειγμα. Ας δούμε τώρα μεσα στο Mix project μας και θα πρέπει να δούμε ότι υπάρχει ένας ακόμα φάκελος που ονομάζεται **doc/**. Μέσα του βρίσκεται η δημιουργημένη τεκμηρίωσή μας. Αν επισκεφθούμε την σελίδα index στο browser μας θα πρέπει να δούμε τα παρακάτω:

![ExDoc Screenshot 1]({{ site.url }}/assets/documentation_1.png)

Expand Down
6 changes: 3 additions & 3 deletions gr/lessons/basics/functions.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ lang: gr

## Ανώνυμες Συναρτήσεις

Όπως εννοεί το όνομα, μια ανώνυμη συνάρτηση δεν έχει όνομα. Όπως είδαμε στο μάθημα `Enum§, αυτές συνήθως στέλντονται σε άλλες συναρτήσεις. Για να ορίσουμε μια ανώνυμη συνάρτηση στην Elixir χρειαζόμαστε τις λέξεις κλειδί `fn` και `end`. Μέσα σε αυτές μπορούμε να ορίσουμε οποιοδήποτε αριθμό παραμέτρων και σωμάτων συναρτήσεων χωρισμένα με το `->`.
Όπως εννοεί το όνομα, μια ανώνυμη συνάρτηση δεν έχει όνομα. Όπως είδαμε στο μάθημα `Enum`, αυτές συνήθως στέλντονται σε άλλες συναρτήσεις. Για να ορίσουμε μια ανώνυμη συνάρτηση στην Elixir χρειαζόμαστε τις λέξεις κλειδί `fn` και `end`. Μέσα σε αυτές μπορούμε να ορίσουμε οποιοδήποτε αριθμό παραμέτρων και σωμάτων συναρτήσεων χωρισμένα με το `->`.

Ας δούμε ένα βασικό παράδειγμα:

Expand Down Expand Up @@ -113,7 +113,7 @@ iex> Greeter.phrase

### Προστάτες

Πρόσφατα αναφερθήκαμε στους προστάτες στο μάθημα [Δομές Ελέγχου](../control-structures), τώρα θα δούμε πως μπορούμε να τους εφαρμόσυμε σε ονομασμένες συναρτήσεις. Όταν η Elixir έχει αντιπαραβάλει μια συνάρτηση, όλοι οι υπάρχοντες προστάτες θα ελεχθούν.
Πρόσφατα αναφερθήκαμε στους προστάτες στο μάθημα [Δομές Ελέγχου](../control-structures), τώρα θα δούμε πως μπορούμε να τους εφαρμόσουμε σε ονομασμένες συναρτήσεις. Όταν η Elixir έχει αντιπαραβάλει μια συνάρτηση, όλοι οι υπάρχοντες προστάτες θα ελεχθούν.

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

Expand Down Expand Up @@ -181,7 +181,7 @@ end
** (CompileError) def hello/2 has default values and multiple clauses, define a function head with the defaults
```

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

```elixir
defmodule Greeter do
Expand Down
2 changes: 1 addition & 1 deletion gr/lessons/basics/mix-tasks.md
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ $ mix hello
Γειά σου, Κόσμε!
```

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

```shell
$ mix hell
Expand Down
4 changes: 2 additions & 2 deletions gr/lessons/basics/mix.md
Original file line number Diff line number Diff line change
Expand Up @@ -97,15 +97,15 @@ Generated example app

Το project μας δεν έχει εξαρτήσεις αλλά θα έχει σύντομα, έτσι ας δούμε τον ορισμό εξαρτήσεων και το κατέβασμά τους.

Για να προσθέσουμε μια νέα εξάρτηση χρειάζεται να την προσθέσουμε πρώτα στο αρχείο `mix.exs` και στον τομέα `deps`. Η λίστα των εξαρτήσεων μας συντάσσεται από τούπλες με 2 απαιτούμενες τιμές και μια προεραιτική: Το όνομα πακέτου σαν άτομο, το αλφαριθμητικό έκδοσης και προεραιτικά τις επιλογές.
Για να προσθέσουμε μια νέα εξάρτηση χρειάζεται να την προσθέσουμε πρώτα στο αρχείο `mix.exs` και στον τομέα `deps`. Η λίστα των εξαρτήσεων μας συντάσσεται από τούπλες με 2 απαιτούμενες τιμές και μια προαιρετική: Το όνομα πακέτου σαν άτομο, το αλφαριθμητικό έκδοσης και προαιρετικά τις επιλογές.

Για αυτό το παράδειγμα ας δούμε ένα project με απαιτήσεις, όπως το [phoenix_slim](https://github.com/doomspork/phoenix_slim):

```elixir
def deps do
[{:phoenix, "~> 1.1 or ~> 1.2"},
{:phoenix_html, "~> 2.3"},
{:cowboy, "~> 1.0"},
{:cowboy, "~> 1.0", only: [:dev, :test]},
{:slime, "~> 0.14"}]
end
```
Expand Down
8 changes: 4 additions & 4 deletions gr/lessons/basics/modules.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ lang: gr

## Ενότητες

Οι ενότητες είναι ο καλύτερος τρόπος οργάνωσης συναρτήσεων σε ένα namespace. Επιπρόσθετα της συλλογής συναρτήσεων, μας επιτρέπουν να ορίζουμε ονομασμένες και ιδιοτικές συναρτήσεις τις οποίες καλύψαμε σε προηγούμενο μάθημα.
Οι ενότητες είναι ο καλύτερος τρόπος οργάνωσης συναρτήσεων σε ένα namespace. Επιπρόσθετα της συλλογής συναρτήσεων, μας επιτρέπουν να ορίζουμε ονομασμένες και ιδιωτικές συναρτήσεις τις οποίες καλύψαμε σε προηγούμενο μάθημα.

Ας δούμε ένα βασικό παράδειγμα:

Expand Down Expand Up @@ -107,7 +107,7 @@ iex> %{name: "Sean"} = sean

## Σύνθεση

Τώρα που ξέρουμε πως να δημιουργήσουμε ενότητες και δομές ας μάθουμε πως να προσθέσουμε λειτουργικότητα σε αυτές μέσως της σύνθεσης. Η Elixir μας παρέχει μια ποικιλία διαφορετικών τρόπων για να αλλιλεπιδρούμε με άλλες ενότητες.
Τώρα που ξέρουμε πως να δημιουργήσουμε ενότητες και δομές ας μάθουμε πως να προσθέσουμε λειτουργικότητα σε αυτές μέσω της σύνθεσης. Η Elixir μας παρέχει μια ποικιλία διαφορετικών τρόπων για να αλληλεπιδρούμε με άλλες ενότητες.

### `alias`

Expand Down Expand Up @@ -166,7 +166,7 @@ iex> last([1, 2, 3])

Είναι προκαθορισμένο όλες οι συναρτήσεις και οι μακροεντολές να εισάγονται αλλά μπορούμε να τις φιλτράρουμε χρησιμοποιώντας τις επιλογές `:only` και `:except` .

Για να εισάγουμε συγκεκριμένες συναρτήσεις και μακροεντολές, πρέπει να παρέχουμε το ζευγάρι όνομα/πολλυπλοκότητα στις `:only` και `:except`. Ας ξεκινήσουμε εισάγοντας μόνο την συνάρτηση `last/1`:
Για να εισάγουμε συγκεκριμένες συναρτήσεις και μακροεντολές, πρέπει να παρέχουμε το ζευγάρι όνομα/πολυπλοκότητα στις `:only` και `:except`. Ας ξεκινήσουμε εισάγοντας μόνο την συνάρτηση `last/1`:

```elixir
iex> import List, only: [last: 1]
Expand All @@ -176,7 +176,7 @@ iex> last([1, 2, 3])
3
```

Αν εισάγουμε τα πάντα εκτός της `last/1` και δοκιμάσουμε τις ίδιες συναρτήσεις με πρίν:
Αν εισάγουμε τα πάντα εκτός της `last/1` και δοκιμάσουμε τις ίδιες συναρτήσεις με πριν:

```elixir
iex> import List, except: [last: 1]
Expand Down
2 changes: 1 addition & 1 deletion gr/lessons/basics/pipe-operator.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ lang: gr
foo(bar(baz(new_function(other_function()))))
```

Εδώ, περνάμε την τιμή της `other_function/1` στην `new_function/1`, και την `new_function/1` στην `baz/1`, την `baz/1` στην `bar/1` και τέλος το αποτέλεσμα της `bar/1` στην `foo/1`. Η Elixir κάνει μια πραγματική προσέγγιση σε αυτό το συντακτικό χάος δίνοντάς μας τον τελεστή σωλήνα. Ο τελεστής σωλήνα (`|>`) *δέχεται το αποτέλεσμα μιας έκφρασης και το μεταφέρει*. Ας δούμε το ίδιο παράδειγμα ξαναγραμμένο χρησιμοποιώντας τον τελεστή σωλήνα:
Εδώ, περνάμε την τιμή της `other_function/1` στην `new_function/1`, και την `new_function/1` στην `baz/1`, την `baz/1` στην `bar/1` και τέλος το αποτέλεσμα της `bar/1` στην `foo/1`. Η Elixir κάνει μια πραγματιστική προσέγγιση σε αυτό το συντακτικό χάος δίνοντάς μας τον τελεστή σωλήνα. Ο τελεστής σωλήνα (`|>`) *δέχεται το αποτέλεσμα μιας έκφρασης και το μεταφέρει*. Ας δούμε το ίδιο παράδειγμα ξαναγραμμένο χρησιμοποιώντας τον τελεστή σωλήνα:

```elixir
other_function() |> new_function() |> baz() |> bar() |> foo()
Expand Down
Loading

0 comments on commit 41b145f

Please sign in to comment.