Διαδρομές
/
Elixir
Elixir
/
Ύλη
/
Αντιστοίχιση προτύπων
Αν

Αντιστοίχιση προτύπων σε Elixir

73 ασκήσεις

Σχετικά με την έννοια Αντιστοίχιση προτύπων

Όταν γράφουμε συναρτήσεις σε Elixir, μπορούμε να αξιοποιήσουμε ένα επιβεβαιωτικό ύφος με αντιστοίχιση προτύπων:

def read_file() do
  {:ok, contents} = File.read("hello.txt")
  contents
end
  • Η αντιστοίχιση προτύπων γίνεται ρητά με τον τελεστή αντιστοίχισης, =/2.

    • Οι αντιστοιχίσεις πετυχαίνουν όταν το σχήμα των δεδομένων στην αριστερή πλευρά του τελεστή ταιριάζει με τη δεξιά πλευρά.

    • Όταν οι αντιστοιχίσεις πετυχαίνουν, οι μεταβλητές στα αριστερά δεσμεύονται με τις τιμές στα δεξιά.

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

      {:ok, number, _} = {:ok, 5, [4.5, 6.3]}
      number
      # => 5 is bound to this variable
      
    • Ο τελεστής καρφίτσας ^ μπορεί να χρησιμοποιηθεί για να αποτρέψει τη νέα δέσμευση μιας μεταβλητής και αντ' αυτού να κάνει αντιστοίχιση προτύπων με την υπάρχουσα τιμή της.

      number = 10
      {:ok, ^number, _} = {:ok, 5, [4.5, 6.3]}
      # => ** (MatchError) no match of right hand side value: {:ok, 5, [4.5, 6.3]}
      
  • Οι αντιστοιχίσεις προτύπων μπορούν επίσης να εμφανίζονται στην κεφαλή μιας ρήτρας συνάρτησης, έτσι ώστε μόνο τα ορίσματα που ταιριάζουν με το πρότυπο να καλούν τη συνάρτηση.

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

    defmodule Example do
      def named_function(:a = atom_variable) do
        {atom_variable, 1}
      end
    end
    
    Example.named_function(:a)
    # => {:a, 1}
    # The first function clause matches, so it is invoked
    
    Example.named_function(:b)
    # => ** (FunctionClauseError) no function clause matching in Example.named_function/1
    
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα

Μάθε την έννοια Αντιστοίχιση προτύπων

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

Ξεκλείδωσε 10 ακόμη ασκήσεις για να εξασκηθείς στην έννοια Αντιστοίχιση προτύπων