Sobes.tech
Middle

Τι είναι ο τελεστής '===' στη Ruby;

sobes.tech AI

Απάντηση από AI

Ο τελεστής === (τρία ίσα) στη Ruby ονομάζεται τελεστής ισότητας περιπτώσεων (case equality operator).

Χρησιμοποιείται στις εκφράσεις case/when και ορίζεται από τις κλάσεις για να ελέγξει αν ο δεξιός τελεστής ανήκει στην "κατηγορία" ή "εύρος" που αντιπροσωπεύεται από τον αριστερό τελεστή.

Η συμπεριφορά του τελεστή === εξαρτάται από την κλάση του αριστερού τελεστή.

Παραδείγματα:

  • Κλάση Module: Ελέγχει αν ο δεξιός τελεστής είναι ένα στιγμιότυπο ή υποκλάση του module/κλάσης.
    # Ελέγχει αν ο δεξιός τελεστής είναι ένα στιγμιότυπο της String ή υποκλάσης της.
    String === "hello"
    # => true
    
  • Κλάση Range: Ελέγχει αν ο δεξιός τελεστής βρίσκεται μέσα στο εύρος.
    # Ελέγχει αν το 5 βρίσκεται στο εύρος 1..10.
    (1..10) === 5
    # => true
    
  • Κλάση Regexp: Ελέγχει αν η συμβολοσειρά ταιριάζει με την κανονική έκφραση.
    # Ελέγχει αν η συμβολοσειρά "/ruby/" ταιριάζει με την κανονική έκφραση /ruby/.
    /ruby/ === "/ruby/"
    # => true
    
  • Κλάση Proc: Καλεί ένα μπλοκ με τον δεξιό τελεστή ως όρισμα.
    # Καλεί ένα μπλοκ με το όρισμα 5.
    ->(x) { x > 3 } === 5
    # => true
    
  • Κλάση Symbol: Συγκρίνει ένα σύμβολο με ένα άλλο string ή σύμβολο.
    # Συγκρίνει το σύμβολο :test με το string "test".
    :test === "test"
    # => true
    

Στις περισσότερες άλλες κλάσεις, το === συμπεριφέρεται όπως το ==.

Εφαρμογή σε case/when:

Η έκφραση case condition είναι ισοδύναμη με μια σειρά κλήσεων === σε κάθε τιμή when με το condition ως δεξιό τελεστή.

# Ισοδύναμο με String === value
# Στη συνέχεια Integer === value
case value
when String
  # ...
when Integer
  # ...
end