Ποιος είναι ο καλύτερος τρόπος για να μετακινηθείτε μέσα από μια σειρά στο Classic Asp VBScript;

ψήφοι
31

Στον παρακάτω κώδικα

For i = LBound(arr) To UBound(arr)

Ποιο είναι το σημείο, ζητώντας από τη χρήση LBound; Σίγουρα αυτό είναι πάντα 0.

Δημοσιεύθηκε 05/08/2008 στις 15:07
πηγή χρήστη
Σε άλλες γλώσσες...                            


5 απαντήσεις

ψήφοι
45

Γιατί να μην χρησιμοποιήσουμε For Each; Με αυτόν τον τρόπο δεν χρειάζεται να νοιάζονται τι LBoundκαι να UBoundείναι.

Dim x, y, z
x = Array(1, 2, 3)

For Each y In x
    z = DoSomethingWith(y)
Next
Απαντήθηκε 05/08/2008 στις 15:36
πηγή χρήστη

ψήφοι
16

Υπάρχει ένας καλός λόγος για να ΜΗΝ ΧΡΗΣΙΜΟΠΟΙΕΙΤΕFor i = LBound(arr) To UBound(arr)

dim arr(10) διαθέτει έντεκα μέλη της συστοιχίας, 0 έως 10 (υποθέτοντας ότι το VB6 προεπιλεγμένη Option Base).

Πολλοί προγραμματιστές VB6 αναλάβει η σειρά είναι ένα που βασίζεται, και ποτέ δεν χρησιμοποιούν το κατανεμηθεί arr(0). Μπορούμε να αφαιρέσετε μια δυνητική πηγή σφαλμάτων με τη χρήση For i = 1 To UBound(arr)είτε For i = 0 To UBound(arr), επειδή τότε είναι σαφές εάν arr(0)χρησιμοποιείται.

For each κάνει ένα αντίγραφο κάθε στοιχείο του πίνακα, και όχι ένα δείκτη.

Αυτό έχει δύο προβλήματα.

  1. Όταν προσπαθούμε να εκχωρήσετε μια τιμή σε ένα στοιχείο του πίνακα, δεν αντικατοπτρίζει την αρχική. Αυτός ο κωδικός εκχωρεί την τιμή 47 στην μεταβλητή i, αλλά δεν επηρεάζει τα στοιχεία του arr.

    ARR = Array (3,4,8)
    για κάθε i στην ARR
         i = 47
    επόμενο i
    Response.Write ARR (0) - Επιστρέφει 3, δεν 47

  2. Δεν γνωρίζουμε τον δείκτη ενός στοιχείου πίνακα σε ένα for each, και δεν είναι εγγυημένη την ακολουθία των στοιχείων (αν και φαίνεται να είναι σε τάξη.)

Απαντήθηκε 23/09/2008 στις 16:24
πηγή χρήστη

ψήφοι
3

LBound δεν είναι πάντα 0.

Αν και δεν είναι δυνατό να δημιουργήσει μια σειρά που έχει τίποτε άλλο εκτός από το 0 Κάτω δεσμεύεται σε VBScript, είναι ακόμα δυνατό να ανακτήσει μια σειρά από παραλλαγές από ένα στοιχείο COM που μπορεί να καθορίσει ένα διαφορετικό LBound.

Αυτό είπε ποτέ δεν έχω συναντήσει αυτό που έχει κάνει κάτι τέτοιο.

Απαντήθηκε 24/09/2008 στις 19:24
πηγή χρήστη

ψήφοι
1

Έχω χρησιμοποιείται πάντα για κάθε ...

Απαντήθηκε 12/08/2008 στις 15:34
πηγή χρήστη

ψήφοι
1

Πιθανώς προέρχεται από VB6. Επειδή με την επιλογή Base δήλωση σε VB6, μπορείτε να αλλάξετε το κατώτερο όριο των πινάκων ως εξής:

Option Base 1

Επίσης σε VB6, μπορείτε να αλλάξετε το κατώτερο όριο ενός συγκεκριμένου πίνακα ως εξής:

Dim myArray(4 To 42) As String
Απαντήθηκε 05/08/2008 στις 15:24
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more