Microsoft®
Visual Basic® Scripting Edition
Η Function
|
Περιγραφή
Δηλώνει το όνομα τα ορίσματα και τον κώδικα
που σχηματίζουν τον κορμό μιας διαδικασίας Function.
Σύνταξη
[Public | Private] Function name [(arglist)]
[statements]
[name = expression]
[Exit Function]
[statements]
[name = expression]
End Function
Η σύνταξη της δήλωσης Function
αποτελείται από τα παρακάτω μέρη :
ΜΕΡΟΣ | ΠΕΡΙΓΡΑΦΗ |
Public | Δείχνει ότι η διαδικασία Function είναι προσιτή σε όλες τις διαδικασίες σε όλα τα κείμενα. |
Private | Δείχνει ότι η διαδικασία Function είναι προσιτή μόνο σ’ εκείνες τις διαδικασίες στο κείμενο μέσα στο οποίο έχει δηλωθεί. |
name | Όνομα της Function. Ακολουθεί τους ήδη υπάρχοντες κανόνες ονομασίας μιας μεταβλητής. |
arglist | Μια λίστα από μεταβλητές που αναπαριστά ορίσματα τα οποία έχουν περάσει στη διαδικασία Function από τη στιγμή που αυτή κλήθηκε. Πολλές μεταβλητές μαζί διαχωρίζονται μεταξύ τους με κόμματα. |
statements | Οποιαδήποτε ομάδα από δηλώσεις που είναι έτοιμες να εκτελεστούν μέσα στον κορμό της διαδικασίας Function. |
expression | Επιστρέφει τη τιμή της Function. |
Το όρισμα arglist αποτελείται από τα παρακάτω
μέρη και έχει την ακόλουθη σύνταξη :
[ByVal | ByRef] varname[( )]
ΜΕΡΟΣ | ΠΕΡΙΓΡΑΦΗ |
ByVal | Δείχνει ότι το όρισμα περνάει μόνο με τιμή. |
ByRef | Δείχνει ότι το όρισμα περνάει μόνο με αναφορά. |
Varname | Όνομα της μεταβλητής που αναπαριστά το όρισμα. Ακολουθεί τους ήδη υπάρχοντες κανόνες ονομασίας μιας μεταβλητής. |
Σχόλια
Αν δε καθορίζονται σαφώς με τη χρήση είτε της Public είτε της Private, οι διαδικασίες έχουν κοινή πρόσβαση πράγμα το οποίο σημαίνει ότι είναι ορατές σε όλες τις διαδικασίες που βρίσκονται μέσα στο κείμενό σας. Η τιμή των τοπικών μεταβλητών μέσα σε μια Function δε διατηρείται κατά τη διάρκεια που καλείται η διαδικασία.
Ολόκληρος ο εκτελέσιμος κώδικας πρέπει
να περιέχεται μέσα στις διαδικασίες. Δε μπορείτε να προσδιορίσετε, καθορίσετε
μια διαδικασία Function μέσα
σε μια άλλη διαδικασία Function
ή Sub.
Η δήλωση Exit Function προκαλεί αυτόματη έξοδο από τη διαδικασία Function. Η εκτέλεση του προγράμματος συνεχίζεται με τη δήλωση που ακολουθεί τη δήλωση που κάλεσε τη διαδικασία Function. Μπορεί να εμφανιστεί οποιοσδήποτε αριθμός από τη δήλωση Exit Function μέσα σε μια διαδικασία Function.
Η δήλωση Exit Function προκαλεί
αυτόματη έξοδο από τη διαδικασία Function.
Η εκτέλεση του προγράμματος συνεχίζεται με τη δήλωση που ακολουθεί τη δήλωση
που κάλεσε τη διαδικασία Function.
Μπορεί να εμφανιστεί οποιοσδήποτε αριθμός από τη δήλωση Exit
Function μέσα σε μια διαδικασία Function.
Όπως η διαδικασία Sub έτσι και η Function είναι μια ξεχωριστή διαδικασία η οποία μπορεί να δεχτεί ορίσματα, να πραγματοποιήσει, εκτελέσει μια σειρά από δηλώσεις και να αλλάξει τις τιμές των ορισμάτων. Παρ ’όλα αυτά, αντίθετα από μια διαδικασία Sub, μπορείτε να χρησιμοποιήσετε μια Function στα δεξιά μιας έκφρασης με τον ίδιο ακριβώς τρόπο που χειρίζεστε οποιαδήποτε function, όπως τη Sqr, Cos ή τη Chr, οταν επιθυμείτε να χρησιμοποιήσετε τη τιμή που επιστρέφεταιΚαλείτε μια διαδικασία Function μέσα σε μια έκφραση, χρησιμοποιώντας το όνομα της function και μετά τη λίστα των ορισμάτων μέσα σε παρενθέσεις. Μπορείτε να παρατηρείστε τη δήλωση Call ώστε να αντλήσετε συγκεκριμένες πληροφορίες πάνω στο πως να καλείτε διαδικασίες Function.
.
|
|
Προσοχή! Οι διαδικασίες Function μπορούν να επαναλαμβάνουν τον εαυτό τους (αναδρομή). Αυτό σημαίνει ότι μπορούν να καλέσουν από μόνες τους τον εαυτό τους και να εκτελέσουν μια δεδομένη εντολή. Κάτι τέτοιο όμως μπορεί να οδηγήσει σε υπερχείλιση. | |
|
Για να επιστρέψετε μια τιμή από μια function,
ορίστε τη τιμή στο όνομα της function. Μπορεί να εμφανιστεί οποιοσδήποτε
αριθμός τέτοιων ορισμών μέσα στη διαδικασία. Αν καμία τιμή δεν έχει οριστεί
στο συγκεκριμένο name , τότε η διαδικασία επιστρέφει μια προκαθορισμένη
τιμή. Μια αριθμητική function επιστρέφει 0 και μια function συμβολοσειράς
επιστρέφει μια συμβολοσειρά μηδενικού μήκους ( ΄΄΄΄ ). Μια function η οποία
επιστρέφει μια αναφορά σ’ ένα αντικείμενο, επιστρέφει Nothingαν
δεν έχει οριστεί κανένα αντικείμενο στο name ( χρησιμοποιώντας το Set
) μέσα στη function.
Το ακόλουθο παράδειγμα δείχνει πως μπορείτε
να ορίσετε μια επιστρεφόμενη τιμή σε μια function που ονομάζεται BinarySearch.
Σ’ αυτή τη περίπτωση ορίζεται το False
στο όνομα προκειμένου να φανερωθεί ότι δεν έχει βρεθεί καμία τιμή.
Function BinarySearch (…)
…
‘ Value not found. Return a value of False.
If lower upper Then
BinarySearch = False
Exit Function
End If
…
End Function
Οι μεταβλητές οι οποίες χρησιμοποιούνται
στις διαδικασίες Function χωρίζονται
σε δυο κατηγορίες. Σ’ αυτές που δηλώνονται αναλυτικά μέσα στη διαδικασία
και σ’ αυτές που δε δηλώνονται σαφώς. Οι μεταβλητές που αναλυτικά δηλώνονται
μέσα σε μια διαδικασία (χρησιμοποιώντας τη Dim)
είναι πάντα τοπικές στη διαδικασία. Οι μεταβλητές που χρησιμοποιούνται
μεν μέσα στη διαδικασία αλλά δεν έχουν δηλωθεί αναλυτικά από πριν, είναι
κι αυτές τοπικές εκτός αν έχουν δηλωθεί σε κάποιο υψηλότερο επίπεδο έξω
από τη διαδικασία.
|
|
Προσοχή! Μια διαδικασία μπορεί
να χρησιμοποιήσει μια μεταβλητή που δεν έχει δηλωθεί αναλυτικά μέσα σ’
αυτή, αλλά μπορεί να δημιουργηθεί σύγχυση αν οτιδήποτε άλλο που θα χρησιμοποιηθεί
στο ίδιο επίπεδο, έχει το ίδιο όνομα. Αν η διαδικασία σας αναφέρεται σε
μια αδήλωτη μεταβλητή η οποία έχει το ίδιο όνομα και σε μια άλλη διαδικασία,
σταθερά ή μεταβλητή, υποτίθεται ότι η διαδικασία σας αναφέρεται στο όνομα
που χρησιμοποιείται στο συγκεκριμένο επίπεδο. Για να αποφύγετε τέτοιου
είδους συγχύσεις πρέπει να δηλώσετε αναλυτικά όλες τις μεταβλητές. Μπορείτε
επίσης να χρησιμοποιήσετε τη δήλωση Option Explicit
για να πιέσετε και να αναγκάσετε έτσι την υποχρεωτική δήλωση όλων των μεταβλητών.
|
|
|
|
|
Προσοχή! Η VBScript μπορεί
να επαναδιευθετήσει τις αριθμητικές εκφράσεις προκειμένου να αυξήσει την
εσωτερική απόδοση του κειμένου. Γι αυτό το λόγο αποφεύγετε να χρησιμοποιείτε
μια διαδικασία Function μέσα
σε μια αριθμητική έκφραση όταν η function αλλάζει τη τιμή των μεταβλητών
μέσα στην ίδια έκφραση.
|
|
|
© 1997 Microsoft Corporation. All rights reserved.