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