Funkcje i procedury VBScript z przykładem

⚡ Inteligentne podsumowanie

Funkcje i procedury VBScript organizują kod w bloki wielokrotnego użytku. Procedura Sub uruchamia polecenia bez zwracania wartości, podczas gdy procedura Function zwraca wartość, przypisując ją do nazwy funkcji, a argumenty są przekazywane za pomocą ByRef lub ByVal.

  • 🧱 Code Ponowne użycie: Procedury modularyzują kod, dzięki czemu łatwiej jest go pisać, debugować i utrzymywać w przypadku dużych skryptów.
  • 📤 Podprocedura: Sub uruchamia blok instrukcji pomiędzy Sub i End Sub, ale nie zwraca wartości.
  • 📥 Procedura funkcyjna: Funkcja zwraca wartość, przypisując ją do nazwy funkcji między parametrami Function i End Function.
  • 📞 Powołanie: Użyj słowa kluczowego call, aby uruchomić funkcję Sub, a nazwy funkcji w wyrażeniu, aby uzyskać jej wynik.
  • 🔁 ByRef kontra ByVal: ByRef umożliwia zapisanie zmian po wywołaniu; ByVal działa na kopii, więc zmiany nie są zapisywane.
  • ⚙️ Domyślne przekazywanie: Domyślnie VBScript przekazuje argumenty przez odwołanie, chyba że określono ByVal.

Funkcje i procedury VBScript

Procedury VBScript

Procedury VBScript są używane głównie do organizacji kodu i ponownego użycia. Do tej pory używaliśmy prostych przykładów, ponieważ celem jest nauka VBScript. Jednak w scenariuszu rzeczywistym kod nie jest tak prosty. Kiedy próbujesz zaimplementować coś użytecznego, kod może stać się bardziej złożony. Mogą być setki linii rozciągających się na wiele stron.

Jeśli nie zorganizujesz kodu prawidłowo, cały proces kodowania, debugowania i zarządzania kodem stanie się naprawdę skomplikowany. Dlatego powinieneś starannie zorganizować lub zmodularyzować kod, aby stał się łatwy w zarządzaniu.

Załóżmy ponadto, że masz zestaw instrukcji wykonujących określoną akcję. Chcesz, aby ta sama akcja została powtórzona kilka razy. W takim razie po co ciągle pisać ten sam kod? Stosując skuteczne techniki, możesz sprawić, że Twój kod będzie nadawał się do ponownego wykorzystania. Pomoże to programistom w pięknym uporządkowaniu kodu, a testerom w łatwym identyfikowaniu błędów. Krótko mówiąc, modularyzacja i ponowne wykorzystanie kodu są bardzo ważne, aby uczynić kod potężniejszym, niezawodnym i łatwiejszym w utrzymaniu. Oto procedury w obrazie.

Rodzaje procedur w VBScript

Procedura to blok kodu, który w idealnym przypadku wykonuje pojedynczą funkcję. Dobrym przykładem funkcji jest blok kodu przetwarzający dane wejściowe lub obsługujący plik. Istnieją dwa rodzaje procedur w VBScript.

  1. Procedura podrzędna: Procedura podrzędna nie zwraca wartości.
  2. Procedura funkcji: Procedura funkcji jest używana, jeśli chcesz zwrócić wartość.

Podprocedury

Jeśli chcesz wykonać serię instrukcji bez zwracania żadnej wartości, możesz użyć procedur podrzędnych.

Procedury podrzędne rozpoczynają się i kończą odpowiednio instrukcjami Sub i End Sub. Procedury podrzędne mogą przyjmować argumenty, ale nie mogą zwracać wartości. Procedury podrzędne mogą, ale nie muszą, wymagać wprowadzenia danych wejściowych.

Sub outputMessage()
document.write("Welcome")
End Sub

Samo napisanie tego kodu nic nie wyświetli. Tutaj utworzyłeś procedurę Sub o nazwie OutputMessage. Następnie musisz to zadzwonić.

wywołaj wiadomość wyjściową ()

Połącz oba te zestawy kodów w środku tag like this.

<script type="text/vbscript">

Sub outputMessage()
document.write("Welcome")
End Sub
call outputMessage()
</script>

Dane wyjściowe tego kodu będą

Podprocedury

Funkcje VBScriptu

Jeśli chcesz wykonać serię instrukcji i zwrócić wartość, musisz użyć procedur funkcyjnych, powszechnie znanych jako funkcja.

Procedury funkcyjne rozpoczynają się i kończą odpowiednio instrukcjami Function i End Function.

Procedura funkcyjna może, ale nie musi, pobierać dane wejściowe.

Procedury funkcyjne zwracają wartość poprzez przypisanie wartości do jej nazwy.

<script type="text/vbscript">
Function findArea(radius)
   const pi=3.14
   area = pi*radius*radius
   findArea = area
End Function
document.write("The area of the circle when the radius is 20 is " & findArea(20) &"<br/>")
document.write("The area of the circle when the radius is 10 is " & findArea(10))

</script>

Dane wyjściowe tego kodu będą

Funkcje VBScriptu

Parametry ByRef i ByVal

Argumenty VBScript można przekazywać do procedur poprzez referencję lub wartość.

Jeśli nie określisz niczego podczas wywoływania procedury, argument/argumenty są domyślnie przekazywane przez referencję.

Jeśli zmiany wprowadzone w argumentach mają się utrzymać nawet po wywołaniu procedury, należy przekazać argumenty VBScript przez referencję.

Kiedy argument jest przekazywany przez wartość, wszelkie zmiany wprowadzone przez wywoływaną procedurę w wartości argumentu zmienna nie utrzymują się po wywołaniu procedury.

Słowa kluczowe ByRef i ByVal służą do przekazywania argumentów odpowiednio przez referencję i wartość.

Aby zrozumieć różnicę, najpierw wykonaj poniższy kod i zobacz wynik.

Krok 1) Skopiuj kod do swojego edytora

<script type="text/vbscript">
Function returnResult(ByRef value)
   value = value +1
   returnResult = value
End Function
Dim x
x=5
call returnResult(x)
document.write(x)
</script>

Krok 2) wynik wynosi 6.

Krok 3) Zmień funkcję returnResult (wartość ByRef) na funkcję returnResult (wartość ByVal)

Krok 4) Teraz twoje wyjście będzie wynosić 5.

FAQ

Użyj polecenia Exit Sub wewnątrz Sub lub Exit Function wewnątrz Function, aby opuścić procedurę tuż przed jej zakończeniem. Wykonanie wraca do wiersza, który ją wywołał.

Jeśli używasz słowa kluczowego call, ujmuj argumenty w nawiasy. Jeśli pominiesz call, nie umieszczaj w nawiasach wielu argumentów. Błędne użycie tego słowa jest częstym błędem składniowym języka VBScript.

Tak. Podprogram lub funkcja VBScript może wywołać samą siebie, co nazywa się rekurencją. Zawsze dodawaj warunek bazowy, który zatrzymuje wywołania, w przeciwnym razie skrypt będzie wykonywał pętlę, aż zabraknie miejsca na stosie.

Tak. Sztuczna inteligencja potrafi wykryć zduplikowane stwierdzenia, np.tracPrzenieś je do podklasy lub funkcji z odpowiednimi parametrami i zaktualizuj wywołania. Dzięki temu skrypty będą krótsze i łatwiejsze w utrzymaniu.

Tak. Sztuczna inteligencja może tracPokaż, jak zmienia się wartość za pomocą ByRef i ByVal, pokaż wynik dla każdego z nich i zalec, którego użyć, w zależności od tego, czy osoba wywołująca powinna zobaczyć zmianę.

Podsumuj ten post następująco: