__FILE__ και $0 στη ruby
Τεχνική τεκμηρίωση
03/09/2009
Πιθανώς να έχετε δει σε κώδικα ruby κάτι σαν το ακόλουθο:
#ruby
if __FILE__ == $0
#κάνε κάτι
end
Τι είναι λοιπόν
__FILE__και $0 στη ruby;
Ας υποθέσουμε ότι έχουμε ένα αρχείο toarxeiomoy.rb που περιέχει τον ακόλουθο κώδικα:
#############toarxeiomoy.rb ###############
if __FILE__ == $0
print "$0 και __FILE είναι #{$0}"
else
print "$0 είναι #{$0} \n __FILE__ είναι #{ __FILE__ }"
end
Αν εκτελέσουμε το αρχείο από την γραμμή εντολών του Windows ή *NIX συστήματος :
C:\> ruby toarxeiomoy.rb $0 και __FILE__ είναι toarxeiomoy.rb
Επομένως και FILE και $0 έχουν ως τιμή την συμβολοσειρά του ονόματος του αρχείου που εκτέλεσα.
Θα φτιάξω ένα δεύτερο αρχείο ονόματι alloarxeio1.rb που το μόνο που θα κάνει είναι να καλεί το toarxeiomoy.rb
############alloarxeio1.rb######################## require 'toarxeiomoy.rb'
Εκτελέστε alloarxeio1.rb από τη γραμμή εντολών :
C:\> ruby alloarxeio1.rb $0 είναι alloarxeio1.rb __FILE__ είναι toarxeiomoy.rb
Επομένως
__FILE__είναι το όνομα του αρχείου ruby όπου εκτελείται ο κώδικας τη συγκεκριμένη στιγμή, ενώ η μεταβλητή $0 αναφέρεται πάντα στο όνομα του script από το οποίο ξεκίνησε το πρόγραμμα. Αν φτιάξετε ένα τρίτο αρχείο alloarxeio2.rb που καλεί το alloarxeio1.rb τότε η μεταβλητή $0 θα είναι alloarxeio2.rb .
Αν έχετε ασχοληθεί με python είναι ακριβώς αντίστοιχο του
#python
if __name__ == '__main__':
#κάνε κάτι
Η χρησιμότητα της τακτικής αυτής είναι ότι μπορούμε να ορίσουμε διαφορετική λειτουργία σε ένα πρόγραμμα αν εκτελείται άμεσα και διαφορετική αν καλείται μέσω άλλου αρχείου.
Β.Τ.