Protseduuride ja funktsioonide kasutamine
JÀrgnev tekst kirjeldab LibreOffice BASICu protseduuride ja funktsioonide kasutamise pÔhitÔdesid.
Uue mooduli loomisel lisab LibreOffice Basic automaatselt SUBi Main. See vaikimisi nimi ei nĂ€ita LibreOffice Basicu projekti alguspunkti jĂ€rjekorda. Soovi korral saad selle SUBi ĂŒmber nimetada.
Avalike muutujate, protseduuride ja funktsioonide nimede kohta kehtivad mÔned piirangud. Neid nimesid ei tohi kasutada sama teegi mÔne mooduli nimena.
Protseduurid (SUBid) ja funktsioonid (FUNCTIONid) aitavad sĂ€ilitada programmist ĂŒlevaadet, jagades programmi loogilisteks tĂŒkkideks.
Ăks kasulik asjaolu protseduuride ja funktsioonide juures on see, et kui sa oled korra kirjutanud programmi koodi, mis sisaldab konkreetseid ĂŒlesande komponente, siis saad sama koodi teistes projektides uuesti kasutada.
Muutujate edastamine protseduuridele (SUB) ja funktsioonidele (FUNCTION)
Muutujad saab edastada nii protseduuridele kui ka funktsioonidele. Parameetrite jaoks tuleb SUBid ja FUNCTIONid deklareerida:
Sub SubName(Parameter1 As Type, Parameter2 As Type,...)
Programmi kood
End Sub
SUB kutsutakse vĂ€lja jĂ€rgmise sĂŒntaksiga:
SubName(Value1, Value2,...)
SUBile edastatavad parameetrid peavad sobima SUBi deklareerimisel kasutatutega.
Sama kehtib funktsioonide (FUNCTION) kohta. Lisaks tagastavad funktsioonid alati tulemuse. Funktsiooni tulemus defineeritakse selliselt, et funktsiooni nimele omistatakse tagastusvÀÀrtus:
Function FunctionName(Parameter1 As Type, Parameter2 As Type,...) As Type
Programmi kood
FunctionName=Result
End Function
FUNCTION kustutakse vĂ€lja jĂ€rgmise sĂŒntaksiga:
Variable=FunctionName(Parameter1, Parameter2,...)
Protseduuri vÔi funktsiooni vÀljakutsumiseks vÔib kasutada ka tÀispikka nime:
Teek.Moodul.Makro()
NÀiteks, et kutsuda vÀlja makro Autotext, mis asub teegis Gimmicks, kasuta jÀrgmist kÀsku:
Gimmicks.AutoText.Main()
Muutujate edastamine vÀÀrtuse vÔi viida jÀrgi
SUBile vÔi FUNCTIONile saab parameetreid edastada vÀÀrtuse vÔi viida kaudu. Kui pole teisiti mÀÀratud, siis edastatakse muutuja alati viida kaudu. See tÀhendab, et SUB vÔi FUNCTION saab parameetri ning vÔib selle vÀÀrtust lugeda ja muuta.
Kui tahad edastada parameetrit vÀÀrtuse jÀrgi, siis lisa SUBi vÔi FUNCTIONi vÀljakutsumisel parameetri ette mÀrksÔna "ByVal". NÀiteks:
Result = Function(ByVal Parameter)
Sellisel juhul FUNCTION muutuja originaalsisu ei muuda, kuna ta saab ainult vÀÀrtuse, mitte parameetri enda.
Muutujate skoop
SUBis vÔi FUNCTIONis mÀÀratud muutuja kehtib ainult kuni protseduuri sulgemiseni. Seda nimetatakse kohalikuks muutujaks. Paljudel juhtudel on vaja, et muutuja kehtiks kÔigis protseduurides, moodulites ja teekides vÔi pÀrast SUBi vÔi FUNCTIONi sulgemist.
Muutujate deklareerimine vÀljaspool SUBi vÔi FUNCTIONit
GLOBAL VarName As TYPENAME
Muutuja on kehtiv niikaua, kuni kestab LibreOffice'i seanss.
PUBLIC VarName As TYPENAME
Muutuja kehtib kÔigis moodulites.
PUBLIC VarName As TYPENAME
Muutuja kehtib ainult selles moodulis.
PUBLIC VarName As TYPENAME
Muutuja kehtib ainult selles moodulis.
Privaatsete muutujate nÀide
JÔusta privaatsed muutujad privaatsetena kÔigis moodulites, seades CompatibilityMode (tÔene).
' ***** Module1 *****
Private myText As String
Sub initMyText
myText = "Hello"
print "in module1 : ", myText
End Sub
' ***** Module2 *****
'Option Explicit
Sub demoBug
CompatibilityMode( true )
initMyText
' Tagastab tĂŒhja stringi
' (or raises error for Option Explicit)
print "Now in module2 : ", myText
End Sub
Muutuja sisu salvestamine pÀrast SUB-ist vÔi FUNCTION-ist vÀljumist
STATIC VarName As TYPENAME
Muutuja sÀilitab oma vÀÀrtuse kuni FUNCTIONi vÔi SUBi jÀrgmise sisestamiseni. Deklaratsioon peab olema SUBi vÔi FUNCTIONi sees.
FUNCTION-i tagastusvÀÀrtuse tĂŒĂŒbi mÀÀramine
Funktsiooni tagastusvÀÀrtuse tĂŒĂŒbi mÀÀramiseks lisa nii nagu ka muutujate korral funktsiooni nime jĂ€rele tĂŒĂŒbikirjelduse mĂ€rk vĂ”i sisesta parameetrite loendi lĂ”ppu As-i mÀÀratud tĂŒĂŒp ja vastav vĂ”tmesĂ”na, nĂ€iteks:
Function WordCount(WordText As String) As Integer