Η μέθοδος "Απαίτηση" σε Ruby

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

Χρησιμοποιώντας τη μέθοδο "απαιτούν"

Η απαιτούμενη μέθοδος παίρνει το όνομα του αρχείου που απαιτείται, ως a σειρά, ως ένα μόνο επιχείρημα. Αυτό μπορεί να είναι είτε μια διαδρομή προς το αρχείο, όπως ./lib/some_library.rb ή ένα σύντομο όνομα, όπως some_library. Εάν το όρισμα είναι μια διαδρομή και πλήρες όνομα αρχείου, η απαιτούμενη μέθοδος θα ψάξει εκεί για το αρχείο. Ωστόσο, αν το όρισμα είναι ένα σύντομο όνομα, η απαιτούμενη μέθοδος θα αναζητήσει μέσω ενός αριθμού προκαθορισμένων καταλόγων στο σύστημά σας για αυτό το αρχείο. Η χρήση του συντομευμένου ονόματος είναι ο πιο συνηθισμένος τρόπος χρήσης της απαιτούμενης μεθόδου.

instagram viewer

Το ακόλουθο παράδειγμα δείχνει πώς να χρησιμοποιήσετε τη δήλωση απαιτήσεων. Το αρχείο test_library.rb βρίσκεται στο πρώτο μπλοκ κώδικα. Αυτό το αρχείο εκτυπώνει ένα μήνυμα και ορίζει μια νέα κλάση. Το δεύτερο μπλοκ κώδικα είναι το αρχείο test_program.rb. Αυτό το αρχείο φορτώνει το test_library.rb αρχείου χρησιμοποιώντας τη μέθοδο αυτή και δημιουργεί ένα νέο TestClass αντικείμενο.

θέτει "test_library συμπεριλαμβάνεται"
classClassClass
def αρχικοποίηση
θέτει "δημιουργήθηκε το αντικείμενο TestClass"
τέλος
τέλος
#! / usr / bin / env ruby
απαιτούν 'test_library.rb'
t = TestClass.new

Αποφύγετε τις ομαδικές συγκρούσεις

Κατά τη σύνταξη επαναχρησιμοποιήσιμων στοιχείων, είναι καλύτερο να μην δηλώνετε πολλές μεταβλητές στο παγκόσμιο πεδίο εκτός οποιωνδήποτε κλάσεων ή μεθόδων ή χρησιμοποιώντας το $ πρόθεμα. Αυτό είναι να αποφευχθεί κάτι που ονομάζεται "ρύπανση χώρου ονομάτων"Εάν δηλώσετε υπερβολικά πολλά ονόματα, ένα άλλο πρόγραμμα ή βιβλιοθήκη μπορεί να δηλώσει το ίδιο όνομα και να προκαλέσει σύγκρουση ονόματος. Όταν δύο εντελώς ανεξάρτητες βιβλιοθήκες αρχίζουν να αλλάζουν τυχαία τις μεταβλητές του άλλου, τα πράγματα θα σπάσουν - φαινομενικά τυχαία. Αυτό είναι ένα πολύ δύσκολο σφάλμα που πρέπει να εντοπίσουμε και είναι καλύτερο απλά να το αποφύγουμε.

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

Το παρακάτω παράδειγμα επαναλαμβάνει το προηγούμενο παράδειγμα, αλλά περικλείει τα πάντα σε ένα MyLibrary μονάδα μέτρησης. Δύο εκδόσεις του my_program.rb είναι δεδομένα; ένα που χρησιμοποιεί το περιλαμβάνω και μία που δεν το κάνει.

θέτει "test_library συμπεριλαμβάνεται"
μονάδα MyLibrary
classClassClass
def αρχικοποίηση
θέτει "δημιουργήθηκε το αντικείμενο TestClass"
τέλος
τέλος
τέλος
#! / usr / bin / env ruby
απαιτούν 'test_library2.rb'
t = MyLibrary:: TestClass.new
#! / usr / bin / env ruby
απαιτούν 'test_library2.rb'
συμπεριλάβετε το MyLibrary
t = TestClass.new

Αποφύγετε τις απόλυτες διαδρομές

Επειδή τα επαναχρησιμοποιήσιμα εξαρτήματα συχνά μετακινούνται γύρω, είναι επίσης καλύτερο να μην χρησιμοποιείτε απόλυτες διαδρομές στις απαιτούμενες κλήσεις σας. Μια απόλυτη πορεία είναι μια διαδρομή όπως /home/user/code/library.rb. Θα παρατηρήσετε ότι το αρχείο πρέπει να βρίσκεται σε αυτή την ακριβή τοποθεσία για να λειτουργήσει. Εάν το σενάριο έχει κινηθεί ποτέ ή ο κατάλογος του σπιτιού σας αλλάξει ποτέ, αυτό απαιτεί δήλωση θα σταματήσει να λειτουργεί.

Αντί των απόλυτων μονοπατιών, συχνά είναι κοινό να δημιουργούμε ένα ./lib στον κατάλογο του προγράμματος Ruby. ο ./lib στον κατάλογο $ LOAD_PATH μεταβλητή που αποθηκεύει τους καταλόγους στους οποίους αναζητά τα αρχεία Ruby την απαιτούμενη μέθοδο. Μετά από αυτό, αν το αρχείο my_library.rb αποθηκεύεται στον κατάλογο lib, μπορεί να φορτωθεί στο πρόγραμμα σας με ένα απλό απαιτούν 'my_library' δήλωση.

Το παρακάτω παράδειγμα είναι το ίδιο με το προηγούμενο test_program.rb παραδείγματα. Ωστόσο, αναλαμβάνει το test_library.rb Το αρχείο αποθηκεύεται στο ./lib και φορτώνει χρησιμοποιώντας τη μέθοδο που περιγράφεται παραπάνω.

#! / usr / bin / env ruby
$ LOAD_PATH << './lib'
απαιτούν 'test_library.rb'
t = TestClass.new