Σύ

Σύμβολα σε Ruby

1 άσκηση

Σχετικά με την έννοια Σύμβολα

Τα symbols είναι ονομαστικά αναγνωριστικά που μπορούν να χρησιμοποιηθούν για να αναφέρονται σε μια τιμή. Τα symbols δημιουργούνται μέσω ενός literal symbol, βάζοντας ως πρόθεμα σε ένα όνομα τον χαρακτήρα :, π.χ. :foo. Μπορούν επίσης να γραφτούν και με εισαγωγικά, π.χ. :"foo", κάτι που επιτρέπει, για παράδειγμα, κενά στο όνομα.

:foo # => :foo
:"foo boo" # => :"foo boo"

Τα symbols χρησιμοποιούνται σε πολλά σημεία της γλώσσας, μεταξύ άλλων ως κλειδιά σε hashes, για να αναπαραστήσουν ονόματα μεθόδων και ονόματα μεταβλητών.

Αναγνωριστικό

Αυτό που κάνει τα symbols διαφορετικά από τις συμβολοσειρές είναι ότι είναι αναγνωριστικά και δεν αναπαριστούν δεδομένα ή κείμενο. Αυτό σημαίνει ότι δύο symbols με το ίδιο όνομα είναι πάντα το ίδιο αντικείμενο.

"foo".object_id # => 60
"foo".object_id # => 80
:foo.object_id # => 1086748
:foo.object_id # => 1086748

Τροποποίηση των symbols

Τα symbols είναι αμετάβλητα, που σημαίνει ότι δεν μπορούν να τροποποιηθούν. Αυτό σημαίνει ότι όταν "τροποποιείς" ένα symbol, στην πραγματικότητα δημιουργείς ένα νέο symbol. Υπάρχουν μερικές μέθοδοι που μπορούν να χρησιμοποιηθούν για τον χειρισμό των symbols, και όλες επιστρέφουν νέα symbols. Όλες οι μέθοδοι μπορούν να βρεθούν στο Symbol API.

:foo.upcase # => :FOO

:foo.object_id # => 1086748
:foo.upcase.object_id # => 60

Το πλεονέκτημα του ότι τα symbols είναι αμετάβλητα είναι πως είναι πιο αποδοτικά στη μνήμη από τις συμβολοσειρές, αλλά και ασφαλέστερα στη χρήση ως αναγνωριστικά.

Μετατροπή

Τα symbols μπορούν να μετατραπούν σε συμβολοσειρές και αντίστροφα. Αυτό μπορεί να είναι χρήσιμο όταν θέλεις να τροποποιήσεις ένα symbol ή όταν θέλεις να χρησιμοποιήσεις ένα symbol ως συμβολοσειρά. Για να παρουσιάσεις μια συμβολοσειρά ως symbol, μπορείς να χρησιμοποιήσεις τη μέθοδο String#to_sym, και για το αντίθετο, μπορείς να χρησιμοποιήσεις τη μέθοδο Symbol#to_s. Επειδή τα symbols έχουν ένα περιορισμένο σύνολο μεθόδων, μπορεί να είναι χρήσιμο να μετατρέψεις ένα symbol σε συμβολοσειρά για να χρησιμοποιήσεις πάνω του μεθόδους συμβολοσειράς, αν χρειάζεται ένα νέο symbol.

:foo.to_s # => "foo"
"foo".to_sym # => :foo

Λήψη ονομάτων σε εμβέλειες

Στη Ruby μπορείς να πάρεις ονόματα σε εμβέλειες χρησιμοποιώντας διάφορες μεθόδους για να πάρεις τα ονόματα σταθερών, μεθόδων και μεταβλητών. Αυτές οι μέθοδοι επιστρέφουν πίνακες από symbols.

Μερικές μέθοδοι είναι οι Module#constants, Module#instance_methods, Module#class_variables, global_variables και local_variables.

module Foo
  BAR = 1
  def self.baz; end
end

a = 1

Foo.constants # => [:BAR]
Foo.instance_methods # => [:baz]

local_variables # => [:a]

Όλες οι μέθοδοι μπορούν να βρεθούν στο Kernel API και στο Module API.

Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα

Μάθε την έννοια Σύμβολα