Διαδρομές
/
Elixir
Elixir
/
Ύλη
/
Ανώνυμες συναρτήσεις
Αν

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

4 ασκήσεις

Σχετικά με την έννοια Ανώνυμες συναρτήσεις

Οι ανώνυμες συναρτήσεις χρησιμοποιούνται συχνά σε όλη την Elixir από μόνες τους, ως τιμές επιστροφής και ως ορίσματα σε συναρτήσεις υψηλότερης τάξης, όπως η Enum.map/2:

Enum.map([1, 2, 3], fn n -> n + 1 end)
# => [2, 3, 4]

Οι συναρτήσεις στην Elixir αντιμετωπίζονται ως πολίτες πρώτης κατηγορίας:

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

Οι ανώνυμες συναρτήσεις δημιουργούνται με τη λέξη-κλειδί fn και καλούνται με μια τελεία (.):

function_variable = fn n -> n + 1 end

function_variable.(1)
# => 2

Οι ανώνυμες συναρτήσεις μπορούν να δημιουργηθούν και με τη συντομογραφία σύλληψης &.

  • Το αρχικό & δηλώνει την αρχή της έκφρασης σύλληψης.

  • Τα &1, &2 και ούτω καθεξής αναφέρονται στα ορίσματα κατά θέση της ανώνυμης συνάρτησης.

    # Instead of:
    fn x, y -> abs(x) + abs(y) end
    
    # We can write:
    &(abs(&1) + abs(&2))
    
  • Ο τελεστής σύλληψης & μπορεί επίσης να χρησιμοποιηθεί για να συλλάβεις μια υπάρχουσα επώνυμη συνάρτηση:

    # Instead of:
    fn a, b -> a <= b end
    
    # We can capture the function using its name and arity:
    &<=/2
    

Οι ανώνυμες συναρτήσεις στην Elixir είναι closures. Μπορούν να έχουν πρόσβαση σε μεταβλητές που βρίσκονται στο πεδίο εμβέλειας όταν ορίζεται η συνάρτηση. Οι μεταβλητές που ανατίθενται μέσα σε μια ανώνυμη συνάρτηση δεν είναι προσβάσιμες έξω από αυτήν:

y = 2

square = fn ->
  x = 3
  x * y
end

square.()
# => 6

x
# => ** (CompileError): undefined function x/0
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα

Μάθε την έννοια Ανώνυμες συναρτήσεις

Η εξάσκηση είναι κλειδωμένη

Ξεκλείδωσε 1 ακόμη άσκηση για να εξασκηθείς στην έννοια Ανώνυμες συναρτήσεις