Επιστροφή στο blog

Μια επισκόπηση των τύπων δεδομένων στη Ruby

Μια επισκόπηση των τύπων δεδομένων στη Ruby

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

Κάθε προγραμματισμός απαιτεί τη διαχείριση διαφόρων τύπων δεδομένων. Ένας τύπος δεδομένων περιγράφει μια συγκεκριμένη κατηγορία δεδομένων. Λέει στο μηχάνημα πώς πρέπει να χειριστεί τα δεδομένα στο πρόγραμμα. Οι τύποι δεδομένων είναι κρίσιμοι για τον καθορισμό του τι μπορεί να γίνει με τα δεδομένα (συμπεριλαμβανομένων των λειτουργιών που μπορούν να εκτελεστούν). Σε αυτόν τον οδηγό, θα εμβαθύνουμε στους τύπους δεδομένων που είναι διαθέσιμοι στη Ruby. Θα εξερευνήσουμε επίσης τη δυναμική πληκτρολόγηση. Χρησιμοποιώντας αυτή τη δυνατότητα, η Ruby μπορεί να προσδιορίσει αυτόματα τον τύπο δεδομένων μιας μεταβλητής χωρίς να τον δηλώσει ρητά. Ας ξεκινήσουμε!

Προαπαιτούμενα

Για να εξασκηθείτε και να εφαρμόσετε τα βήματα που παρουσιάζονται σε αυτόν τον οδηγό, θα χρειαστείτε τα ακόλουθα στοιχεία:

Τύποι δεδομένων στη Ruby

Η Ruby διαθέτει όλους τους κοινούς τύπους δεδομένων που θα συναντήσετε σε οποιαδήποτε γλώσσα προγραμματισμού: ακέραιους, floats, strings, arrays, symbols, hashes κ.λπ. Στη συνέχεια, θα παρέχουμε μια επισκόπηση του πώς να εργάζεστε με τους διάφορους τύπους δεδομένων της Ruby.

Step 1 – Ακέραιοι

Παρόμοια με τα μαθηματικά, οι integers στον προγραμματισμό υπολογιστών είναι ολόκληροι αριθμοί. Η τιμή μπορεί να είναι θετική, αρνητική ή 0. Το εύρος τιμών είναι το εξής:

Ώρα να δοκιμάσετε τους ακέραιους στη Ruby. Το πρώτο παράδειγμα είναι η εκτύπωση ενός απλού ακέραιου στην οθόνη:

Data Types in Ruby 1

Next, we will work with an integer variable. Here, the variable sample_int contains an integer value (99) and the print function prints the variable value on the screen:

Data Types in Ruby 2

Μπορούμε επίσης να κάνουμε μαθηματικά με ακέραιους. Το ακόλουθο παράδειγμα δείχνει ένα απλό άθροισμα δύο ακέραιων αριθμών:

Όταν εργαζόμαστε με μεγάλους αριθμούς, χρησιμοποιούμε συχνά κόμματα (,) για να διευκολύνουμε την ανάγνωση. Για παράδειγμα, το ένα εκατομμύριο (1000000) γράφεται ως 1,000,000 για καλύτερη αναγνωσιμότητα. Αν και η χρήση κόμματος απαγορεύεται, η Ruby επιτρέπει τη χρήση κάτω παύλας ( _) ως διαχωριστικό. Ρίξτε μια ματιά στο ακόλουθο παράδειγμα:

Data Types in Ruby 3

Η χρήση κάτω παύλας βελτιώνει την αναγνωσιμότητα του κώδικα, ειδικά όταν πρόκειται για μεγάλες ακέραιες τιμές.

Step 2 – Αριθμοί κινητής υποδιαστολής

A floating-point number (ή float για συντομία) αντιπροσωπεύει έναν πραγματικό αριθμό. Παρόμοια με τον μαθηματικό ορισμό, οι πραγματικοί αριθμοί μπορεί να είναι ρητοί ή άρρητοι. Στη Ruby, ένας float είναι βασικά ένας αριθμός που περιέχει μια υποδιαστολή.

Ας δοκιμάσουμε να εκτυπώσουμε μια τιμή float στην οθόνη:

Το επόμενο παράδειγμα δείχνει τη δήλωση μιας μεταβλητής float:

Μπορούμε επίσης να εκτελέσουμε διάφορες μαθηματικές πράξεις στις τιμές και τις μεταβλητές float. Το ακόλουθο παράδειγμα δείχνει ένα απλό άθροισμα δύο αριθμών float:

Τι γίνεται αν προσθέσουμε έναν float και έναν ακέραιο; Η προκύπτουσα τιμή θα είναι float. Στο ακόλουθο παράδειγμα, παρόλο που το 55.0 είναι ένας ολόκληρος αριθμός, αντιμετωπίζεται ως float:

Step 3 – Boolean

Οι τιμές Booleans αντιπροσωπεύουν τις τιμές αλήθειας του κλάδου της λογικής των μαθηματικών. Στη Ruby, οι τύποι δεδομένων Boolean αντιπροσωπεύονται από δύο τιμές: true και false:

  • Μεγαλύτερο από

    • 100 > 99: true

    • 99 > 100: false

  • Μικρότερο από

    • 500 < 999: true

    • 999 < 500: false

  • Ίσο

    • 10 == 10: true

    • 9 == 99: false

Παρόμοια με τους αριθμούς, μπορούμε επίσης να αποθηκεύσουμε μια τιμή true ή false τιμή σε μια μεταβλητή. Το ακόλουθο παράδειγμα επιδεικνύει αυτή τη δυνατότητα:

Step 4 – Συμβολοσειρές

Στον προγραμματισμό, μια συμβολοσειρά αναπαρίσταται ως μια ακολουθία χαρακτήρων (γράμματα, αριθμοί και σύμβολα). Στη Ruby, οι συμβολοσειρές υπάρχουν μέσα σε μονά εισαγωγικά ( ') ή διπλά εισαγωγικά ( "). Έχουμε ήδη καλύψει λεπτομερώς τη χρήση συμβολοσειρών στη Ruby, οπότε αυτή θα είναι μια σύντομη ενότητα.

Το ακόλουθο παράδειγμα είναι ένα βασικό hello world πρόγραμμα στη Ruby:

Μπορούμε επίσης να αποθηκεύσουμε συμβολοσειρές σε μεταβλητές. Το ακόλουθο παράδειγμα ενσωματώνει επίσης τη συνένωση συμβολοσειρών:

Data Types in Ruby 4

Step 5 – Πίνακες

Ένας πίνακας είναι μια δομή δεδομένων που μπορεί να αποθηκεύσει μια συλλογή στοιχείων σταθερού μεγέθους του ίδιου τύπου δεδομένων. Μπορεί επίσης να νοηθεί ως μια συλλογή μεταβλητών του ίδιου τύπου δεδομένων. Είναι μία από τις πιο θεμελιώδεις δομές δεδομένων στις περισσότερες σύγχρονες γλώσσες προγραμματισμού.

Στη Ruby, ένας πίνακας ορίζεται ως εξής:

Είναι δυνατό να δημιουργήσετε έναν πίνακα με οποιουσδήποτε άλλους τύπους δεδομένων έχουμε συζητήσει μέχρι τώρα (ακέραιους, αριθμούς κινητής υποδιαστολής και συμβολοσειρές). Ακολουθούν μερικά παραδείγματα:

  • Ακέραιος: [-5, 0, 5]

  • Κινητής υποδιαστολής: [-9.99, -6.99, -3.99, 0, 3.99]

  • Συμβολοσειρά: [“the”, “quick”, “brown”, “fox”]

Το ακόλουθο παράδειγμα υλοποιεί όλους αυτούς τους τύπους πινάκων:

Data Types in Ruby 5

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

Data Types in Ruby 6

Data Types in Ruby 7

Τώρα, μπορούμε να εργαστούμε με μεμονωμένα στοιχεία των πινάκων:

Data Types in Ruby 7

Σημειώστε ότι στη Ruby, η τιμή του δείκτη των πινάκων ξεκινά από το 0.

Για ευκολία, οι πίνακες στη Ruby συνοδεύονται από τις μεθόδους .first και .last που εκτυπώνουν το πρώτο και το τελευταίο στοιχείο:

Data Types in Ruby 8

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

Data Types in Ruby 9

Step 6 – Symbols

In Ruby, a σύμβολο είναι ένας ειδικός τύπος δεδομένων που λειτουργεί σαν ετικέτα ή αναγνωριστικό. Τα σύμβολα είναι αμετάβλητα, που σημαίνει ότι δεν μπορούν να αλλάξουν. Τα σύμβολα εμφανίζονται σαν να δηλώνουν μεταβλητές χωρίς καμία τιμή.

Ορίστε ένα παράδειγμα συμβόλου:

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

Η Ruby, όντας μια αντικειμενοστρεφής γλώσσα, αντιμετωπίζει τα πάντα ως αντικείμενο (συμπεριλαμβανομένων των αλφαριθμητικών) με τη δική του μοναδική θέση μνήμης, ακόμη και αν τα αλφαριθμητικά είναι πανομοιότυπα. Ωστόσο, όταν αναφέρεστε σε ένα σύμβολο, πρόκειται για το ίδιο αντικείμενο παντού στο πρόγραμμα, στην ίδια θέση μνήμης.

Step 7 – Hashes

Ένα hash είναι μια συλλογή κλειδιών και τιμών που μοιάζει με λεξικό. Συχνά, τα hashes χρησιμοποιούνται για την αποθήκευση σχετικών δεδομένων, για παράδειγμα, πληροφοριών σχετικά με έναν χρήστη.

Ορίστε ένα γρήγορο παράδειγμα ενός hash. Έχουμε δημιουργήσει ένα hash user_info που περιέχει το όνομα χρήστη και τον κωδικό πρόσβασης ενός χρήστη:

Data Types in Ruby hashing in ruby

Για να ανακτήσουμε τις τιμές ενός ζεύγους κλειδιού-τιμής, πρέπει να χρησιμοποιήσουμε το κλειδί. Το ακόλουθο παράδειγμα δείχνει αυτή τη διαδικασία:

Data Types in Ruby retrieve value using key

Η Ruby επιτρέπει επίσης τον ορισμό ενός hash χρησιμοποιώντας ελαφρώς διαφορετικές συντάξεις ( : αντί για =>):

Data Types in Ruby retrieving value using key

Αυτή η δομή σύνταξης είναι παρόμοια με τη σύνταξη που χρησιμοποιείται σε άλλες γλώσσες, για παράδειγμα, στη JavaScript. Σε αυτή τη δομή σύνταξης, τα κλειδιά ορίζονται ως σύμβολα. Γι' αυτό, αντί να χρησιμοποιούμε "username", χρησιμοποιούμε: username για να αποκτήσουμε πρόσβαση στην τιμή.

Δυναμικός καθορισμός τύπων

Ίσως έχετε ήδη παρατηρήσει ότι κατά τη δήλωση μιας μεταβλητής, δεν χρειάζεται να ορίσουμε ρητά έναν τύπο δεδομένων. Αντίθετα, η τιμή της μεταβλητής καθορίζει τον τύπο δεδομένων. Η Ruby χρησιμοποιεί δυναμικό καθορισμό τύπων όπου ο έλεγχος τύπων εκτελείται κατά τον χρόνο εκτέλεσης. Αντίθετα, οι τύποι δεδομένων καθορίζονται κατά τη μεταγλώττιση στις γλώσσες προγραμματισμού με στατικό καθορισμό τύπων (για παράδειγμα, C/C++).

Στο ακόλουθο παράδειγμα, όλες οι τιμές που εκχωρούνται στη μεταβλητή dyn_var είναι έγκυρες:

Στις γλώσσες με δυναμικό καθορισμό τύπων, είμαστε ελεύθεροι να επαναχρησιμοποιήσουμε μια υπάρχουσα μεταβλητή για να αποθηκεύσουμε διαφορετικούς τύπους δεδομένων. Εδώ, το προηγούμενο παράδειγμα έχει ενημερωθεί για να δείξει αυτό το φαινόμενο:

dynamically typed variables

Όπως δείχνει αυτό το παράδειγμα, κάθε φορά που εκχωρείται μια νέα τιμή, αλλάζει ο τύπος δεδομένων της dyn_var κατά την εκτέλεση. Αυτό είναι χρήσιμο κατά τη μετατροπή ενός τύπου δεδομένων σε έναν άλλο. Το ακόλουθο παράδειγμα το δείχνει αυτό:

get input and cast

Εδώ,

  • Επειδή οι είσοδοι από το πληκτρολόγιο είναι αλφαριθμητικά, length είναι αρχικά ένα αλφαριθμητικό.

  • Καθώς η επιθυμητή τιμή μας είναι ένας αριθμός κινητής υποδιαστολής (float), μετατρέπουμε την τιμή του αλφαριθμητικού σε float χρησιμοποιώντας τη μέθοδο to_f.

  • Λόγω της αλλαγής της τιμής, στη length εκχωρείται ο τύπος δεδομένων float. Αυτό είναι που βλέπουμε όταν εκτυπώνουμε την τιμή της στην οθόνη.

Τι θα συνέβαινε αν προσπαθούσαμε να αναμίξουμε δύο διαφορετικούς τύπους δεδομένων μαζί; Η Ruby θα εμφανίσει σφάλμα. Ρίξτε μια ματιά:

mixing two datatypes

Αναγνώριση τύπου δεδομένων

Στη Ruby, τα πάντα αντιμετωπίζονται ως αντικείμενο. Κάθε αντικείμενο στη Ruby συνοδεύεται από τη μέθοδο class. Όταν καλείται, αυτή η μέθοδος αναφέρει ποιος είναι ο τύπος δεδομένων της πηγής. Ακολουθούν μερικά παραδείγματα χρήσης της class μεθόδου:

get classes name

Ένας άλλος τρόπος για να βρείτε τον τύπο δεδομένων είναι η χρήση της kind_of? μεθόδου. Ελέγχει τον τύπο δεδομένων του αντικειμένου σε σχέση με τον τύπο δεδομένων που ζητήθηκε και επιστρέφει μια τιμή Boolean. Δείτε το στο ακόλουθο παράδειγμα:

check datatype

Παρομοίως, υπάρχει μια άλλη μέθοδος is_a? που συγκρίνει τον τύπο δεδομένων και επιστρέφει μια τιμή Boolean. Η μόνη διαφορά είναι η ετικέτα της μεθόδου. Ωστόσο, μπορεί να είναι προτιμότερη επειδή είναι λίγο πιο εύκολη στην ανάγνωση και την κατανόηση από τους προγραμματιστές. Ενημερώστε το προηγούμενο παράδειγμα με is_a?:

check datatype

Τελικές Σκέψεις

Η εργασία με οποιαδήποτε γλώσσα προγραμματισμού απαιτεί καλή κατανόηση των τύπων δεδομένων που υποστηρίζει. Σε αυτόν τον οδηγό, εξερευνήσαμε τους πιο κοινούς τύπους δεδομένων που χρησιμοποιούνται στον προγραμματισμό με Ruby. Συζητήσαμε και παρουσιάσαμε ακέραιους, αριθμούς κινητής υποδιαστολής, συμβολοσειρές, σύμβολα, Boolean και hashes (με παραδείγματα).

Ρίξτε μια ματιά σε περισσότερους οδηγούς από το ιστολόγιό μας που θα σας βοηθήσουν να εξερευνήσετε τη Ruby:

Καλό προγραμματισμό!

author

Preslav Dobrev

Συγγραφέας · CloudSigma

Ο Preslav Dobrev είναι Δημιουργικός Σχεδιαστής στην CloudSigma, με εστίαση στη συνεπή επιχειρηματική ταυτότητα μέσω παραδοσιακών και καινοτόμων καναλιών μάρκετινγκ. Διαθέτει την ικανότητα να συνδυάζει το καλλιτεχνικό όραμα με το στρατηγικό μάρκετινγκ για τη δημιουργία εντυπωσιακών αφηγήσεων επωνυμίας.

Σχόλια

Δεν υπάρχουν σχόλια ακόμα. Γράψτε το πρώτο.